js post 方法提交文件

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

FormData java

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

能夠使用 append 方法向其添加名詞對瀏覽器

而後使用 XMLHttpRequest 的 send() 方法發送app

eg: 異步

var fileObj = new FromData();函數

fileObj.append('key',value);   // value 能夠是一個字符串 string 也能夠是一個 blob (表明,file對象)post

var xhr = new XMLHttpRequest();url

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

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);
    }
相關文章
相關標籤/搜索