原生js上傳文件,使用new FormData()

 當建立一個內容較多的表單,表單裏面又有了文件上傳,文件上傳也須要表單提交,單一的上傳文件很好操做;app

<form action="接口" enctype="multipart/form-data" method="post">
    <input type="file" name="uploadFile"/>
    <input type="submit" value="提交"/>
</form>

可是,正常提交數據和上傳文件不是一個接口,後臺接收參數的方式也是不同的;這就須要兩個form表單,可是form表單是不能嵌套的;還有就是表單的內容是按照順序排列的,穿件兩個獨立的表單,寫樣式會很麻煩;post

  所以須要一個動態建立form表的js代碼url

這個方法只支持到IE10,IE10如下不支持new FormData();spa

//獲取文件
function addFile() {
   document.getElementById('test1').value = "";
var file = document.querySelector('input[type=file]').files[0];//IE10如下不支持
var typeStr="image/jpg,image/png,image/gif,image/jpeg";
if(typeStr.indexOf(file.type)>=0){
document.getElementById('test1').value = file.name;
if (file.size > 2097152) {
alert("上傳的文件不能大於2M");
return;
}else{
     upload(path,file)
    }
}else{
alert("請上傳格式爲jpg、png、gif、jpeg的圖片");
}

//上傳文件
function
upload(path,theFormFile) { var fd = new FormData(); fd.append('file1', theFormFile);//上傳的文件: 鍵名,鍵值 var url = path;//接口 url = url ? url : ''; var XHR = null; if (window.XMLHttpRequest) { // 非IE內核 XHR = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE內核,這裏早期IE版本不一樣,具體能夠查下 XHR = new ActiveXObject("Microsoft.XMLHTTP"); } else { XHR = null; } if (XHR) { XHR.open("POST", url); XHR.onreadystatechange = function() { if (XHR.readyState == 4 && XHR.status == 200) { var resultValue = XHR.responseText; var data = JSON.parse(resultValue); XHR = null; } } XHR.send(fd); } };
相關文章
相關標籤/搜索