在上传时重命名文件名,JSP

时间:2014-02-22 07:10:49

标签: java jsp

我有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);

此印刷品为空。

2 个答案:

答案 0 :(得分:1)

要确定使用FileItem获取的ServletFileUpload#parseRequest哪个文件,您可以调用getFieldName方法获取名称的值属性。

要使用特定名称保存文件,请使用正确的名称创建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

并给我一些反馈

希望有助于此。