2013-05-06 69 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