帮助在Java / J2EE中上传文件

时间:2009-06-12 11:05:13

标签: java apache file-upload

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

实际要求是我只需要解析本地XML文件,将xml解析为适当的对象并将它们放入数据库中。我是否真的需要将文件上传到服务器以解析它。因为我在远程服务器上找不到文件,因为它在我的本地m / c上运行正常。

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

提前致谢!!!

2 个答案:

答案 0 :(得分: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");
  }
}

你还需要表格:

<form name='frm' method="POST" action='UploadServlet' 
id="frm" enctype="multipart/form-data">

答案 1 :(得分:0)

根据您的描述,听起来您的servlet正在尝试根据表单中提交的文件名从文件系统本身读取文件。如果servlet在与文件所在的其他计算机上运行,​​则无法工作。

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