我正在实现一个与resumable.js一起使用的文件上载servlet
每次我尝试读取文件时,我都会得到一个NoSuchElement异常或一个NumberFormatException,其中包含我正在阅读的文件中的字符串。我确定我在某个地方打了一个打嗝,但似乎无法告诉
这是我用来读取请求和写入文件
的片段if(ServletFileUpload.isMultipartContent(request)){
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(temp_dir));
ServletFileUpload upload = new ServletFileUpload(factory);
Iterator<FileItem> iter = upload.parseRequest(request).iterator();
FileItem item = iter.next();
OutputStream out;
try {
out = new FileOutputStream(new File(dest_dir));
IOUtils.copy(item.getInputStream(), out);
logger.debug("Wrote file " + resumableIdentifier + " with chunk number "
+ resumableChunkNumber + " to " + temp_dir);
} catch (FileNotFoundException fnfe) {
fnfe.printStackTrace();
}
}
我做错了什么让代码实际读取并解释文件的内容?
答案 0 :(得分:2)
您必须遍历FileItems。 就在这一行之后:
Iterator<FileItem> iter = upload.parseRequest(request).iterator();
你应该有这样的东西:
File dir = new File(dest_dir);
if (!dir.isDirectory()) dir.mkdirs();
while(iter.hasNext()) {
FileItem item = iter.next();
另外,请不要忘记关闭每个文件项的输出流。
out = new FileOutputStream(new File(dir, item.getName()));
IOUtils.copy(item.getInputStream(), out);
out.close();