Java 文件上傳 MultipartFile與ServletFileUpload


JAVA文件上傳 ServletFileUpload

參考這個:https://www.cnblogs.com/liuyangv/p/8298997.html 

Java文件上傳 MultipartFile

1. 配置MultipartResolver

 

defaultEncoding="UTF-8"               是請求的編碼格式,默認為iso-8859-1
maxUploadSize="1048576"            是上傳文件的大小,單位為字節
uploadTempDir="fileUpload/temp"  為上傳文件的臨時路徑

2.前台表單

1 <form enctype="multipart/form-data" id="J_uploadLocalImgForm" method="post">
2     <input type="hidden" name="authVenderId">
3     <input type="file" class="hide" id="J_uploadLocalImgFile" name="multipartFile" multiple="">
4 </form>

input 標簽上寫上multiple   這個時候就可以選擇多個文件進行上傳,去掉就不支持多選了

3. js 控制驗證上傳文件格式 

一般的話 可能直接就再js中以什么結尾來判斷格式,但這樣是不准確的,如果文件的后綴被改掉呢? 如果你對文件格式要求嚴格的話,那最好在后台做一個比較嚴謹的驗證。

var urlType = urlStr.substring(urlStr.lastIndexOf(".") + 1, urlStr.length);
urlType = urlType.toLowerCase();
if (urlType == "jpg" || urlType == "png" || urlType == "jpeg" || urlType == "gif" || urlType == "bmp") {}

4.java代碼

Controller層
   /**
     * 本地圖片上傳
     * @param multipartFile multipartFiles
     * @return CallbackResult<String>
     */
    @RequestMapping("/multipleUploadWatermarkImg")
    public @ResponseBody CallbackResult<?> multipleUploadWatermarkImg(@RequestBody MultipartFile[] multipartFile){
       return service.multipleUploadWatermarkImg(multipartFile);
    }

這里有個地方,MultipartFile 后面加的這個[ ] 代表數組嘛,支持多個文件上傳,如果就是單個文件的話,去掉就可以了,和前面前台是對應的

Service層這里就不寫了,就是對multipartFile文件進行處理,如果是多個文件就先循環在處理,這里寫幾個MultipartFile的方法

  • getOriginalFilename()文件的路徑
  • getName()返回表單中參數的名稱。
  • getInputStream()返回一個InputStream以從中讀取文件的內容。通過此方法就可以獲取到流
  • getContentType()返回文件的內容類型
  • getSize()以字節為單位返回文件的大小
  • isEmpty()返回上傳的文件是否為空,即,在多部分表單中沒有選擇任何文件,或者所選文件沒有內容。
  • transferTo將收到的文件傳輸到給定的目標文件

這里的transferTo 很好用的,直接可以把文件保存到制定路徑    multipartFile.transferTo(new File(path))  

ServletFileUpload與MultipartFile沖突的問題

問題是倆個同時存在,其中一個使用時會獲取不到上傳文件,網上有人給出了解決方法,不過我沒有去驗證,

http://www.itkeyword.com/doc/8187524065876327482/ServletFileUpload-MultipartResolver-javaSpring

 

這里還有一個我遇到的小問題,當上傳文件過大時該怎么辦?

https://bbs.csdn.net/topics/392015065?locationNum=9&fps=1

這里有人給了個捕獲異常的方法,但是我覺得有點太麻煩了,如果允許的話不如在前台進行判斷

uploadLocalImgFile : function(e) {	
     var file = e.target.files[0];
     if(file.type == "image/png" || file.type == "image/jpeg" || file.type == "image/jpg" ||  file.type == "image/gif"){
        if(file.size > 1024 * 1024){
            swal("上傳圖片的大小不能超過1M","","warning");
            return false;
     }
   } }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM