js post 方法提交文件


使用 javascript 異步提交表單,實現無刷新的 post 上傳表單,主要使用的是瀏覽器基礎對象 (chrome,edge/ie11,firefox)

FormData 

FromData 是一次 http mulitpartfrom-data 的請求內容

可以使用 append 方法向其添加名詞對

然后使用 XMLHttpRequest 的 send() 方法發送

eg:

var fileObj = new FromData();

fileObj.append('key',value);   // value 可以是一個字符串 string 也可以是一個 blob (代表,file對象)

var xhr = new XMLHttpRequest();

xhr.open('POST','url',true);

xhr.send(fileObj);

// fileObj 傳遞的是 files[0] 對象,eg:fildObj = document.getElementById('file_pic').files[0]
var FILES = function(fileObj,url,callback,data){ if(!fileObj){ alert('請選擇發布文件'); return; }; var FileController = url; // 接收上傳文件的后台地址 // FormData 對象 var form = new FormData(); // 可以增加表單數據 // 存入文件對象 form.append("file",fileObj); // 其他描述參數解析 if(data!=''){ for(var key in data){ form.append(key,data[key]); }; }; // XMLHttpRequest 對象 var xhr = new XMLHttpRequest(); xhr.open("POST", FileController, true); xhr.onload = function () { if(xhr.readyState == 4 && xhr.status == 200){ // 查看后台反饋 if(callback){ var req = xhr.responseText; callback(req); }; } else if(xhr.readyState == 4 && xhr.status == 404){ callback({allow:'error'}); return; }; }; xhr.upload.onprogress = function(evt){ //偵查附件上傳情況 //通過事件對象偵查 //該匿名函數表達式大概0.05-0.1秒執行一次 //console.log(evt); //console.log(evt.loaded); //已經上傳大小情況 //evt.total; 附件總大小 var loaded = evt.loaded; var tot = evt.total; var per = Math.floor(100*loaded/tot); var son = document.getElementById('son'); son.innerHTML = per+"%"; //son.style.width=per+"%"; } xhr.send(form); }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM