用所有Annotation配置方式來傳文件, 首先也是修改配置類:app
@Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/index").setViewName("/index"); registry.addViewController("/hello").setViewName("/index"); registry.addViewController("/fileupload").setViewName("/upload");
//增長一個fileupload的重定向, 指向一個upload.jsp文件, 裏面就是兩個input, 具體下面貼 } @Bean
//這個Multipart接應者(這翻譯也是沒sei了), 僅僅設置了一下最大文件尺寸, 若是超過這個尺寸就會報錯,
//具體的報錯還能修改Exception的那個interceptor來定義跟傳msg, 重定向, 試過, 挺好用 public MultipartResolver multipartResolver() { CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(); multipartResolver.setMaxUploadSize(1000000); return multipartResolver; }
上傳測試用的jsp文件簡單貼一下:jsp
... ... <div class="upload"> <form action="upload" enctype="multipart/form-data" method="post"> <input type="file" name="file" /><br> <input type="submit" value="上傳" /><br> </form> </div> ... ...
而後你不是點了上面的submit麼, 執行的action是"upload", 這確定是對應一個controller的, 下面就是:ide
@Controller public class UploadController { @RequestMapping(value = "upload", method = RequestMethod.POST) @ResponseBody public String upload(MultipartFile file) { try { FileUtils.writeByteArrayToFile(new File("c:/upload/" + file.getOriginalFilename()), file.getBytes()); return "ok"; } catch (IOException e) { e.printStackTrace(); return "wrong"; } } }
Linux的精(bian)英(tai)們, 修改一下這裏的目錄名便可.post
就修改配置, 而後作一個controller, 測試建一個jsp, 就搞定了, 簡單地要死吧.測試
哦對了, pom裏面加上common-io的包:spa
<!-- 文件上傳 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <!-- 可簡化I/O操做 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.3</version> </dependency>
註明出處, 所有內容來自"Spring Boot實戰"一書, 我已經購買了kindle的正版(這是個壞習慣, 由於csdn全他媽有, 從源代碼到原書pdf, 連淘寶都省了), 纔不到10塊錢, 推薦你們都買正版, 打擊盜版...畢竟人家寫書是費了時間的, 若是沒人爲之付費, 誰他媽還作知識傳播?誰之後還敢寫書, 對吧?翻譯