【问题标题】:Help with file upload in Java/J2EE帮助在 Java/J2EE 中上传文件
【发布时间】:2010-11-02 10:26:09
【问题描述】:

我需要使用带有 ProgressListener 的 Apache fileupload 上传文件,但同时我还需要显示上传状态的进度条。

实际要求是我只需要解析一个本地 XML 文件,将 xml 解析为适当的对象并将它们放入数据库中。我真的需要将文件上传到服务器来解析它吗?当我在我的本地 m/c 上运行良好时遇到异常,例如在远程服务器上找不到文件。

任何快速帮助将不胜感激。

提前致谢!!!

【问题讨论】:

    标签: java apache file-upload


    【解决方案1】:

    如果您可以访问服务器端,我建议您调试上传过程。异常提示您要根据上传的文件名在服务器上打开文件。在您的本地机器上,这是可行的,因为它运行在同一个文件系统上。在服务器端,Apache FileUpload 接收二进制数据,需要从请求数据流中提取:

    
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
                throws ServletException, IOException {
      if (ServletFileUpload.isMultipartContent(request)) {
        FileItemFactory factory = new DiskFileItemFactory(Integer.MAX_VALUE, null);
        ServletFileUpload upload = new ServletFileUpload(factory);
        List items = upload.parseRequest(request);
        for (FileItem item : items) {
           byte[] data = item.get();
           // do something with the binary data
        }
      } else {
        System.err.println("Not a multipart/form-data");
      }
    }
    

    您还需要以下形式:

    【讨论】:

      【解决方案2】:

      从您的描述看来,您的 servlet 正在尝试根据表单中提交的文件名从文件系统本身读取文件。如果 servlet 在与文件所在位置不同的机器上运行,这将不起作用。

      确保您的 servlet 从文件上传 API 获取文件内容,而不是从本地文件系统。

      【讨论】:

        猜你喜欢
        • 2011-11-14
        • 1970-01-01
        • 2011-08-19
        • 1970-01-01
        • 2011-10-21
        • 1970-01-01
        • 2011-05-02
        • 2014-08-24
        相关资源
        最近更新 更多