//文件名稱採用的是js原生獲取方式
var file = document.getElementById("cover_img").files[0];
//利用FormData傳送文件 append添加須要的數據 var fileObj = new FormData(); fileObj.append('imageFile', file); fileObj.append('fileName', file.name);
//利用XMLHttpRequest對象向後臺發送文件 var xhr = new XMLHttpRequest();
//請求方式,路徑, xhr.open('post','url',true);
//返回值 xhr.onload = function () { if(xhr.readyState == 4 && xhr.status == 200){ var resultData = xhr.responseText; if(resultData == ''){ layer.close(updateIndex) layer.alert("保存成功") }else{ var result = $.parseJSON(resultData); layer.alert(result.msg); }
} else { alert("請聯繫管理員"); return; }; };
//發送請求 xhr.send(fileObj);
注:javascript
文件上傳方式有多種;java
可是ajax利用FormData對象傳輸文件,後臺接收不到文件,具體緣由不明,有待繼續驗證ajax
下面補上ajax上傳方式,經測試能夠上傳json
var TESTFILE = document.getElementById("TESTFILE").files[0]; var formData = new FormData(); formData.append("file", TESTFILE); formData.append("fileName", TESTFILE.name); $.ajax({ url:"${pageContext.request.contextPath}/videomanager/TESTFILE.json", type:"post", // 必須爲post,基礎,不解釋 data:formData, dataType:"json", //cache: false, 關閉緩存,必定不要加,不然會接收不到參數,ajax傳遞數據靠的就是緩存,關閉以後如何才能傳遞參數?只要返回值嗎?在這裏吐槽下說讓加的,是何居心? processData:false, //必須參數 序列化參數 contentType:false, //必須參數 內容類型,不錯的一個屬性,能夠查查資料瞭解瞭解,具體做用就是能夠將複雜的參數傳遞到後臺 success:function(result){ console.log(result); }, error:function(){ alert("error"); } });