Spring的文件上傳功能upload

用所有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塊錢, 推薦你們都買正版, 打擊盜版...畢竟人家寫書是費了時間的, 若是沒人爲之付費, 誰他媽還作知識傳播?誰之後還敢寫書, 對吧?翻譯

相關文章
相關標籤/搜索