javascript - 關于ajax上傳多圖問題。
問題描述
不知道ajax 是如何上傳多圖發送給后臺的。
單個圖片的話可以用base64發送給后臺, 但是如果多圖用這個方法就不適宜了,因為base64會很大。
用什么方式發送給后臺的? 后臺如果是PHP 是如何接收?
根據評論的方法,明明選擇了2個圖片上傳。 為什么后臺只顯示1個文件?
<!DOCTYPE html><html lang='en'><head> <meta charset='UTF-8'> <script src='https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js'></script></head><body><form id='form'> <input type='file' multiple='' name='file'> <button type='button'>上傳</button></form><script>document.getElementById(’btn’).onclick = () => { $.ajax({url: ’./test.php’,type: ’POST’,dataType: ’text’,data: new FormData(document.getElementById(’form’)),processData: false,contentType: false, }) .done(function(data) {console.log(data); })}</script> </body></html>
問題解答
回答1:還是用表單吧,你選擇直接ajax的原因應該是不想刷新頁面,這樣的話可以使用formdata進行ajax提交,這是一個H5的新屬性,具體的可以看看實例,它最主要的功能就是將表單域里的內容封裝成formdata,然后用ajax提交出去,表單控件的name對應后臺的參數name,至于多個圖片就用一組相同name的input就可以了。下面是js和效果圖,還要不懂的話可以追問。
http://www.jianshu.com/p/756e...多圖就是多append進FormData而已
回答3:使用FormData提交就可以了
funUploadFile: function(form, files) { var that = this; var formData = new FormData(form[0]); for (var i = 0; i < files.length; i++) {formData.append(’file[’ + i + ’]’, files[i]); } var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status == 200) {var data = JSON.parse(xhr.responseText);//提交返回 }} //偵查當前附件上傳情況 xhr.upload.onprogress = function(evt) {var loaded = evt.loaded;var tot = evt.total;var per = Math.floor(100 * loaded / tot); //已經上傳的百分比 // console.log(per); } xhr.open('post', 上傳地址); xhr.send(formData);}回答4:
function httpUpload(url, formData) { //formData.append('_token', window._token); return new Promise(function (resolve, reject) {$.ajax({ url: url, type: ’POST’, data: formData, processData: false, contentType: false, dataType: 'json', success: function (response) {resolve(response); }, error: function (response) {reject(response); }}); });}
https://developer.mozilla.org...主要就是將要上傳的文件往formData里面append后端該怎么取就怎么取(php: $_FILES里面)
回答5:貌似題主的初衷是一起傳太大了? 可以一個一個傳,失敗了也能重試,實現成本低。
相關文章:
1. Docker for Mac 創建的dnsmasq容器連不上/不工作的問題2. docker安裝后出現Cannot connect to the Docker daemon.3. css - 定位為absolute的父元素中的子元素 如何設置在父元素的下面?4. javascript - angualr2中emit觸發一個方法然后怎么獲得這個promise的結果5. java - 請問在main方法中寫成對象名.屬性()并賦值,與直接參參數賦值輸錯誤是什么原因?6. mysql里的大表用mycat做水平拆分,是不是要先手動分好,再配置mycat7. java - Spring boot 讀取 放在 jar 包外的,log4j 配置文件,系統有創建日志文件,不寫入日志信息。8. javascript - 圖片鏈接請求一直是pending狀態,導致頁面崩潰,怎么解決?9. python - beautifulsoup獲取網頁內容的問題10. 怎么用css截取字符?
