使用axios+formdata+vue上傳圖片遇到後台接受不到圖片的值的問題

來源:互聯網
上載者:User

標籤:情況下   指定   art   body   全域   cto   element   orm   文字資訊   

先直接貼代碼

html代碼如下:

<input type="file"@change="getFileExpr($event)"><el-form id="uploadForm" :rules="rules2" method="post" enctype="multipart/form-data">
這個地方我是使用的element ui架構中的form組件 原生的html的form標籤也可以,主要添加 id 和指定
method="post" enctype="multipart/form-data"
//onchange 方法 拿到檔案名稱和檔案
getFileExpr(event){
this.fileName = event.target.files[0].name;
this.file = event.target.files[0];
},
//關於formdata使用方式請自行搜尋
let uploadForm=document.getElementById("uploadForm");let formData = new FormData(uploadForm);
formData.append(‘img‘, this.file);
this.$http.post(‘url‘,formData) .then(response => { 
})


 

 通常來說這樣就可以了 這個地方的this.$http 是axios全域配置然後匯入到vue的prototype 問題出於在全域配置的時候因為post請求是formdata格式的,所以要引入qs這個模組用于格式化data資料,但是如果你是使用上傳的話就不要用qs來格式化這個資料了,否則的話後台是接收不到資料的,所以這個判斷應該在加一個條件

 //config.data.constructor !== FormData 不等於formdata的情況下 qs資料
if(config.method  === ‘post‘ && config.data.constructor !== FormData){      config.data = qs.stringify(config.data);  }

以上就是原因,初識axios的時候需要配置很多東西不像以往的基於jq的ajax,比如需要預設情況下axios請求是json格式而後端需要formdata格式就需要引入qs模組,比如上傳圖片還要再次加判斷這樣,遇到這種問題,先看後端報什麼錯誤,如果後端沒問題,那麼就去找文檔、去搜尋、先把錯誤規模逐漸層窄、比如這個問題,最先開始是後端接收不到我上傳的圖片,只能接收到文字資訊,先從fromdata這種查,因為也是第一次用formdata,然後對照網上的案例沒有問題,再使用jq的ajax請求,卻可以請求得到,說明問題還是出在aixos上,對於新手而言把錯誤規模逐漸層窄 我認為這是個很好的思想




使用axios+formdata+vue上傳圖片遇到後台接受不到圖片的值的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.