2014-05-03 171 views
2

我嘗試上傳一些文件,使用Spring Boot。 還有一個問題,我應該在哪裏指出我的文件將被存儲的路徑。 你可以看到我的UploadController,模板和應用程序類在下面。春季開機上傳文件路徑

@Controller 
public class FileUploadController { 

    @RequestMapping(value="/upload", method=RequestMethod.POST) 
    public @ResponseBody String handleFileUpload(@RequestParam("name") String name, 
               @RequestParam("file") MultipartFile file){ 
     if (!file.isEmpty()) { 
      try { 
       byte[] bytes = file.getBytes(); 
       BufferedOutputStream stream = 
         new BufferedOutputStream(new FileOutputStream(new File(name + "-uploaded"))); 
       stream.write(bytes); 
       stream.close(); 
       return "You successfully uploaded " + name + " into " + name + "-uploaded !"; 
      } catch (Exception e) { 
       return "You failed to upload " + name + " => " + e.getMessage(); 
      } 
     } else { 
      return "You failed to upload " + name + " because the file was empty."; 
     } 
    } 

} 

這是我的表格。

<div class="container"> 
      <form method="POST" enctype="multipart/form-data" 
        action="/upload"> 
       File to upload: 
       <input type="file" name="file"/><br/> Name: 
       <input 
        type="text" name="name"/><br/> <br/> <input type="submit" 
                   value="Upload"/> Press here to upload the file! 
      </form> 
     </div> 

這裏是應用程序類。

@Configuration 
@ComponentScan 
@EnableAutoConfiguration 
public class Application { 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application.class, args); 
    } 

    @Bean 
    MultipartConfigElement multipartConfigElement() { 
     MultiPartConfigFactory factory = new MultiPartConfigFactory(); 
     factory.setMaxFileSize("128KB"); 
     factory.setMaxRequestSize("128KB"); 
     return factory.createMultipartConfig(); 
    } 

} 

回答

1

以下代碼行包含添加文件的位置。

new File(name + "-uploaded") 

由於您沒有指定完整的路徑,因此您將從中啓動應用程序,它將保存在java classpath中。

對於生產系統,您應該在指定的共享存儲中定期備份文件,並且存儲大小適合您上傳的文件類型。

如果你在這裏使用的窗口是一個例子:

new File("d:/yourApplicationName/" + name + "-uploaded") 

如果你在這裏使用Linux是一個例子:

new File("/home/yourApplicationName/" + name + "-uploaded") 

注意:您應該創建目錄「yourApplicationName」首先會出現異常。

1

我不認爲這個問題有一個「正確的」答案。把文件放在任何你喜歡的地方,或者如果它適合你,就不要放在任何地方。這完全取決於實際的商業目的是什麼。

+0

很顯然,我的意思是我應該在哪裏寫路徑這些文件。 – user3127896

+0

對不起,我沒有得到。你發佈的哪部分代碼不起作用,或者讓你不快樂? –

0

當然,你需要註冊解析器的多部分請求。此外,您還需要爲此示例工作添加對apache常見上傳的依賴關係。在自旋微觀引導

的RC4變化相關的這shold問題好像

@Configuration 
public class Application{ 
    @Bean 
    public CommonsMultipartResolver multipartResolver() { 
     return new CommonsMultipartResolver(); 
    } 
}