繁体   English   中英

帮助使用Java / J2EE上传文件

[英]Help with file upload in Java/J2EE

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

实际需求是我只需要解析一个本地XML文件,就可以将xml解析为适当的对象并将其放入数据库中。 我真的需要将文件上传到服务器进行解析吗? 当我在远程服务器上无法正常运行时,正在远程服务器上找不到文件之类的异常。

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

提前致谢 !!!

如果您有权访问服务器端,建议您调试上传过程。 该异常表明您要基于上传的文件名在服务器上打开文件。 在本地计算机上,这是可行的,因为它在同一文件系统上运行。 在服务器端,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">

从您的描述中听起来,您的servlet正在尝试根据表单中提交的文件名从文件系统本身读取文件。 如果servlet在文件所在的另一台机器上运行,那么这将无法正常工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM