我有4个输入标签可上传4个不同的文件,
<form method="post" name="myform" action="upload" target="_blank" enctype="multipart/form-data" style="position: absolute; right: -5%; top: 2%;">
Left File : <input type="file" name="dataFile1" id="fileChooser1" /><br><br>
Right File : <input type="file" name="dataFile2" id="fileChooser2" /><br><br>
Config File :<input type="file" name="dataFile3" id="fileChooser3" /><br><br>
Geco File : <input type="file" name="dataFile4" id="fileChooser4" /><br><br><br>
<button type="button" onclick="ValidateFile()">Click to Upload</button>
</form>
现在在我的Servlet.java端,我想重命名正在上传的文件。
我该怎么做?使用commons up loader。
PS:我试图获取输入标记的id名称,以便我可以创建if循环并根据需要分配fileName名称,
String my = request.getParameter("dataFile1");
System.out.println(my);
此印刷品为空。
答案 0 :(得分:1)
要确定使用FileItem获取的ServletFileUpload#parseRequest哪个文件,您可以调用getFieldName方法获取名称的值来自上面的JSP代码段的strong>属性。
要使用特定名称保存文件,请使用正确的名称创建File对象,并使用该对象调用FileItem#write。
此代码未经测试,但应该为您提供一个起点。
List items = upload.parseRequest(httpRequest);
Iterator iter = items.iterator();
File outputDir = getOutputDir();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
String origName = item.getFieldName();
if ("dataFile1".equals(origName) {
File outputFile = new File(outputDir, "firstFile.txt"); // This bit is doing the renaming
item.write(outputFile);
} // ... else all the other inputs get handled ...
}
答案 1 :(得分:0)
我认为您需要做的是以下内容:
1st - 解析请求获取FileItem列表,如下所示:
List<FileItem> items = upload.parseRequest(request);
第二步 - 处理上传的项目,如下所示:
Iterator<FileItem> iter = items.iterator();
while (iter.hasNext()) {
FileItem item = iter.next();
if (item.isFormField()) {
processFormField(item);
} else if (!item.isFormField()) {
// Process a file upload
String fieldName = item.getFieldName();
String fileName = item.getName();
String contentType = item.getContentType();
boolean isInMemory = item.isInMemory();
long sizeInBytes = item.getSize();
//here you change the name of the uploaded file and then write it
File uploadedFile = new File(dir , "fileName");
item.write(uploadedFile);
}
}
请查看处理上传项目部分中的文档here。
并给我一些反馈
希望有助于此。