2013-05-06 66 views
0

我試圖在Spring應用程序中實現文件上傳功能。將文件傳輸到Tomcat位置

目前,我使用HTML5表單的multiple屬性將多個文件發送到服務器。這些文件正在控制器中,但是我在將它們傳輸到服務器目標時遇到了問題。

@RequestMapping(value = "/upload", method = RequestMethod.POST) 
public String handleUpload(@RequestParam("files[]") List<MultipartFile> files, Model model) { 

    String fileName; 
    File transferFile; 
    String filePath = System.getProperty("catalina.base") + File.separator + "resources" + File.separator; 
    ArrayList<File> fileList = new ArrayList<File>(files.size()); 
    ArrayList<String> fileNameList = new ArrayList<String>(files.size()); 


    for (MultipartFile file : files) { 

     fileName = filePath + file.getOriginalFilename(); 
     transferFile = new File(fileName); 
     fileNameList.add(fileName); 

     try { 
      if (transferFile.exists()) { 
       logger.info("Successful Transfer!"); 
       file.transferTo(transferFile); 
      else 
       logger.info("Could not create file at " + fileName); 

我離開了catch塊和其他記錄,但在創建transferFile對象,但它根本不存在的位置。

如何在指定位置創建文件?

回答

2
  1. 檢查您是否在表單標記中添加了enctype ='multipart/form-data'。

檢查您的配置文件spring.xml

<beans:bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
<!-- one of the properties available; the maximum file size in bytes --> 
      <beans:property name="maxUploadSize" value="100000000" /> 
</beans:bean> 

2.檢查您的文件標記的名稱屬性附加傷害定義並在控制器方法handleUpload使用相同。

3.檢查您是否在指定的位置創建了文件,您是從哪個用戶傳輸文件的,即檢查transferFile是否在目的地創建文件。

+0

所有3個都已完成。關於第二點,在逐步調試時,我可以將'files []'列表看作LinkedList,並且文件名在那裏。 – Jason 2013-05-06 11:03:59

+0

transferFile = new File(fileName);添加transferFile.createNewFile(),以便解決您的問題。由於您未創建新文件,因此您的transferFile.exists()條件在此處失敗。現在它將完美運行。 – Ruju 2013-05-06 11:13:22

+0

這就是解決方案!謝謝! – Jason 2013-05-06 11:48:10