1 function uploadImageFile(){ 2 var xhr = new XMLHttpRequest(); 3 //定義表單變量 4 var file = document.getElementById('imageFiles').files; 5 //新建一個FormData對象 6 var formData = new FormData(); 7 //追加文件數據 8 for(i=0;i<file.length;i++){ 9 formData.append("file["+i+"]", file[i]); 10 } 11 12 //post方式 13 xhr.open('POST', memberPath + "/backstage/photo/uploadPhoto.json"); 14 //發送請求 15 xhr.send(formData); 16 //success回調 17 xhr.onreadystatechange = function(){ 18 if ( xhr.readyState == 4 && xhr.status == 200 ) { 19 console.log( xhr.responseText ); 20 var data = xhr.responseText; 21 data = JSON.parse(xhr.responseText) 22 if (data.code == 100) { 23 //insertPhotoList(data.userPhotos); 這里傳過來的是一個List<model>,做頁面邏輯處理的 24 } else if (data.code == 101) { 25 aler('上傳圖片不符合要求'); 26 } else if (data.code == 102){ 27 var update_vip_url = 'update_vip_url'; 28 alert('您目前是普通會員,圖片文件不可超過5M|升級會員可上傳更大文件立即升級會員'); 29 } else if (data.code == 103) { 30 alert('您目前是VIP會員,圖片文件不可超過50M'); 31 } 32 33 } 34 }; 35 //設置超時時間 36 xhr.timeout = 100000; 37 xhr.ontimeout = function(event){} 38 }
這里是針對一個按鈕可多選的上傳,也就是input加上了 multiple="multiple" 屬性。change事件觸發的。后台用的springMVC框架。
1 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; 2 Iterator<String> names = multipartRequest.getFileNames(); 3 4 while (names.hasNext()) { 5 String name = (String) names.next(); 6 MultipartFile multipartFile = multipartRequest.getFile(name); 7 }
這里用循環拿到文件,就可以進行上傳操作了。
這里只是工作中遇到了,記錄一下,考慮並不周全。js也是百度之后,找不到原頁了,所以就不附轉載地址了。見諒。