[英]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.