【发布时间】:2011-07-09 14:56:32
【问题描述】:
我正在尝试将三张图片上传到我的服务器,正在工作,但上传的始终是用户选择的最后一个文件,而不是选择的三个。
这是我的代码:
protected void doPost(HttpServletRequest request, HttpServletResponse response){
boolean multipart = ServletFileUpload.isMultipartContent(request);
if (multipart) {
DiskFileItemFactory fileItemFactory = new DiskFileItemFactory();
fileItemFactory.setSizeThreshold(5 * 1024 * 1024); //5 MB
fileItemFactory.setRepository(tmpDir);
ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
try {
List items = uploadHandler.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
File file = new File(dir, generateNewName());
item.write(file);
}
} catch (FileUploadException ex) {
} catch (Exception ex) {
}
}
}
-- 更新:
<html>
<head>
<title>Upload</title>
</head>
<body>
<form action="Upload" method="post" enctype="multipart/form-data">
<input type="file" name="file1" />
<br />
<input type="file" name="file2" />
<br />
<input type="file" name="file3" />
<br />
<input type="submit" value="Enviar" />
</form>
</body>
更新 2:
我发现了我的错误:
当我调用方法 generateNewName() 返回一个包含 (date)+(hour)+(miliseconds) 的字符串时,我认为这应该足以每次生成一个新名称但总是返回相同的名称,所以这样重写每次都是同一个文件。
很抱歉给您带来不便,感谢大家的帮助。
最好的问候, 瓦尔特·恩里克。
【问题讨论】:
-
您是否调试过
List items = uploadHandler.parseRequest(request)行以查看request是否带有3 个文件?你也可以发布你的 html/jsp 代码吗? -
Valter,上传的文件完好吗?含义:你说只有第三个文件被上传;这与用户上传的文件相同还是被破坏了?
-
@bluefoot 我没有调试我的代码,但我放了一些'system.out',这一切都很好,没有异常被启动。我要发布我的jsp代码
-
@Guss ,文件是相同的,我的意思是,完整的,这种上传文件的方法已经可以上传文件,但是现在我需要上传三个文件,而不是一个。遵循它应该以这种方式工作的逻辑,但事实并非如此=)
-
大家好,我终于发现我的错误了,抱歉打扰你=)
标签: java jsp servlets file-upload apache-commons-fileupload