首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用gwtupload从文件中获取文件内容

如何使用gwtupload从文件中获取文件内容
EN

Stack Overflow用户
提问于 2013-08-20 23:24:05
回答 2查看 1.5K关注 0票数 0

我正在使用GWTUpload上传文件。我正在获取服务器信息、文件名、内容类型等。在onFinishHandler中,但是没有将文件内容从服务器端获取到客户端的选项。

注意:我正在尝试上传XML文件和EXCEL文件

我使用的是GWT2.4、GXT3.0.1、GWTUpload 0.6.6

以下是示例代码

客户端代码- OnFinishHandler

代码语言:javascript
复制
u.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
            @Override
            public void onFinish(IUploader uploader) {
                if (uploader.getStatus() == Status.SUCCESS) {

                    System.err.println(uploader.getServerResponse());

                    UploadedInfo info = uploader.getServerInfo();
                    System.out.println("File name " + info.name);
                    System.out.println("File content-type " + info.ctype);
                    System.out.println("File size " + info.size);

                    System.out.println("Server message " + info.message);
                }
            }
        });

Servlet代码

代码语言:javascript
复制
public class GWTFileUploadServlet extends UploadAction {
    private static final long serialVersionUID = -6742854283091447922L;

    String fileContent;
    File uploadedFile;

    @Override
    public String executeAction(HttpServletRequest request,
            List<FileItem> sessionFiles) throws UploadActionException {
        String response = "";
        int cont = 0;
        for (FileItem item : sessionFiles) {
            if (false == item.isFormField()) {
                cont++;
                try {
                    File file = File.createTempFile("upload-", ".bin");
                    item.write(file);

                                        uploadedFile = file;
                    fileContent = item.getContentType();


                    response += "File saved as " + file.getAbsolutePath();

                } catch (Exception e) {
                    throw new UploadActionException(e.getMessage());
                }
            }
        }

        removeSessionFileItems(request);

        return response;
    }

    @Override
    public void getUploadedFile(HttpServletRequest request,
            HttpServletResponse response) throws IOException {
        if (fileContent != null && !fileContent.isEmpty()) {
            response.setContentType(fileContent);
            FileInputStream is = new FileInputStream(uploadedFile);
            copyFromInputStreamToOutputStream(is, response.getOutputStream());
        } else {
            renderXmlResponse(request, response, XML_ERROR_ITEM_NOT_FOUND);
        }
    }

}

请帮帮我...

EN

回答 2

Stack Overflow用户

发布于 2013-08-21 02:36:41

您可以在调用item.write(...)时读取在文件系统中创建的文件,但最好从接收到的FileItem获取InputStream,并将其内容写到任何地方。例如,如果内容是一个String,您可以使用StringWritter来获取它:

代码语言:javascript
复制
      InputStream inputStream = item.getInputStream();

      StringWriter writer = new StringWriter();
      IOUtils.copy(inputStream, writer);
      String theContentString = writer.toString();

编辑过的

为了在客户端获取文件的内容,您必须使用任何方法从服务器检索它:

如果文件的内容是ascii,则在gwtupload servlet中使用

  • As作为自定义消息:使用executeAction.
  • Do的返回字符串对servlet进行RequestBuilder调用,以使用上传器URL值获取文件。
  • 使用任何GWT机制,如RPC。

在现代浏览器中,您可以在客户端获取文件的内容,而无需将其发送到服务器端。看一看lib-gwt-file

票数 1
EN

Stack Overflow用户

发布于 2013-08-21 03:24:59

在您的代码中,您可以只使用

文件;byte[] = item.get();

您将在" file“变量中获得编码格式的所有文件内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18338972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档