一、正常上傳文件的步驟。
1.設置表單form屬性:enctype="multipart/form-data"
2.js代碼:
var file = document.getElementById("file2");
var fileList = file.files; //獲取的文件數組
- function uploadFile(obj){//這是我的方法
- var form=document.getElementById('record'); //record是form的id
- var formData = new FormData(form);//將form放入formdata中
- for(var i=0;i<fileArr.length;i++){//這兩個是我的要上傳的文件數組
- //將數組中的file放入,傳到后台
- formData.append("picfile",fileArr[i]);
- }
- for(var i=0;i<otherFile.length;i++){
- //將數組中的file放入,傳到后台
- formData.append("otherfile",otherFile[i]);
- }
- $.ajax({
- dataType : "json",
- url : "/service/record/ajaxUploadUpdate",
- method : "post",
- data :formData,
- // 告訴jQuery不要去處理發送的數據
- processData : false,
- // 告訴jQuery不要去設置Content-Type請求頭
- contentType : false,
- success : function(data){
- //成功之后的操作
- },
- error:function(){
- obj.disabled=false;
- }
- })
- }
3.我的后台參數列表
@RequestMapping(value = "upload", method = RequestMethod.POST)
@ResponseBody
public String upload(@RequestParam("picFile") MultipartFile picFile,@RequestParam("otherfile") MultipartFile otherfile,
@ModelAttribute("form") EvaluationReportForm form)'
picFile,otherfile這兩個參數是我用來接收文件數組的。后面一個是用來接收其他的參數
二、我遇到的問題
在選擇文件的情況下,一切ok,沒什么問題。
但是在我修改的時候,沒有選擇文件的情況下,直接404,報錯。
三、解決方法
我也是在網上看到別人的文章試了下,可以。
獲取文件數組的方式,不要通過參數列表獲取,換一種通過request的方式來,代碼如下:
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;//這個request是HttpServletRequest request
List<MultipartFile> picfile=multipartRequest.getFiles("picfile");
List<MultipartFile> otherfile=multipartRequest.getFiles("otherfile");
這樣就解決問題了。