2009-06-12 47 views
0

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

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

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

在此先感谢!

回答

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">
0

从你的描述它听起来像你的servlet正试图从文件系统本身读取文件,这取决于表单中提交的文件名。如果servlet在文件所在的不同计算机上运行,​​这不会起作用。

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