1. 程式人生 > >SpringMVC + MultipartFile實現檔案上傳

SpringMVC + MultipartFile實現檔案上傳

jar包別漏掉:

commons-fileupload

maven依賴:

<dependency>
   <groupId>commons-fileupload</groupId>
   <artifactId>commons-fileupload</artifactId>
   <version>1.2.2</version>
</dependency>

Spring配置(這裡採用的是註解配置):

@Bean
public MultipartResolver multipartResolver() throws IOException 
{ CommonsMultipartResolver commonsMultipartResolver=new CommonsMultipartResolver(); commonsMultipartResolver.setUploadTempDir(new FileSystemResource("fileUpload/temp"));//上傳中臨時檔案存放目錄 commonsMultipartResolver.setMaxUploadSize(2097152);//上傳檔案的總大小限制,這裡設定為2G commonsMultipartResolver.setDefaultEncoding("UTF-8"
);//編碼 //commonsMultipartResolver.setResolveLazily();//延遲解析,解析檔案的時候再拋異常 //commonsMultipartResolver.setServletContext(); commonsMultipartResolver.setMaxInMemorySize(1024);//快取大小限制 //commonsMultipartResolver.setMaxUploadSizePerFile();//單個檔案大小限制 //commonsMultipartResolver.setPreserveFilename(); return commonsMultipartResolver
; }

HTML程式碼:

<div>
    <form  id="uploadTest" name="uploadTest"
enctype="multipart/form-data" >
        <input type="file" name="file">
        <button class="btn" type="button" id="uploadButton">上傳</button>
    </form>
</div>

js程式碼:

$(function() {
$("#uploadButton")
.click(
function() {
$("#uploadTest")
.ajaxSubmit(
                        {
type : 'post',
url : "/test/uplodeTest",
contentType : "application/x-www-form-urlencoded; charset=utf-8",
success: function(data) {
console.log(data)
                            },
error: function (data)
                            {
console.log(data)
                            }
                        });
});
});

後臺使用Spring MVC:

/**
 * 檔案上傳測試
*
 * @param file
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping("/uplodeTest")
public String uplodeTest(MultipartFile file, HttpServletRequest request, HttpServletResponse response) throws Exception {
//這裡的引數file名稱要和<input type="file" name="file">中的name一致
//配置主沒有注入MultipartResolver這個Bean時,file會為null
    if (file == null) {
return this.json(Constants.CODE_FAIL);
}
//檔案不為空,寫入上傳路徑
if (!file.isEmpty()) {
//上傳的檔案存入/fileUpload/目錄下
String realPath = request.getSession().getServletContext().getRealPath("/fileUpload/");
//上傳檔名
String filename = file.getOriginalFilename();
File filepath = new File(realPath, filename);
//判斷路徑是否存在,如果不存在就建立一個
if (!filepath.getParentFile().exists()) {
filepath.getParentFile().mkdirs();
}
//將上傳檔案儲存到一個目標檔案當中
file.transferTo(new File(realPath + File.separator + filename));
        return this.jsonOK();
} else {
return this.json(Constants.CODE_FAIL);
}
}