Hello,大家週末好,最近在寫項目中遇到一個很奇葩的問題就是使用element upload組件在iOS中多張上傳到oss的時候只有第一張圖片上傳成功,後面的圖片都上傳失敗了,今天在這裏給大家講解一下解決方案。
分析問題
upload組件中有一個必傳參數 action (必選參數,上傳的地址)
**注意這裏只要配置上傳地址,組件會自動發送請求上傳到服務器(post請求)
(參數爲FormData)**
我們來做了一個測試,最後得到的結果是iOS系統中post請求多次地址,iOS會取post緩存
解決方法
upload組件還有一個參數 http-request 覆蓋默認的上傳行爲,可以自定義
上傳的實現(function)
<el-upload
class="upload-demo"
action="action"
:on-preview="handlePreview"
list-type="picture"
:data="params"
:file-list="fileList"
:multiple="true"
:http-request="uploadSectionFile"
:on-remove="handleRemove"
:disabled="is_disabled"
>
<el-button size="small" type="primary" v-show="editable">上傳圖片或PDF</el-button>
</el-upload>
methods:{
uploadSectionFile(){
//自己做來做上傳如果自己來做得話建議就不要用這個組件了,添加需求的時候
//比較好控制
let forDate = new FormData(); //定義FormData對象
formDate.append('key',key); //添加和後臺約定的上傳參數
***注意這裏不能直接append一個對象,最好一個參數一個參數的append
let random = Math.floor(Math.random() * 10000); // 隨機數
this.axios.post('上傳地址?ios=' + 'new Date().getTime() + random'+ ' , forDate).then(res=>{})
//這裏添加隨機數和時間是爲了保障每次請求的地址不一樣iOS就不會讀取緩存
// ios這個參數是自定義的
}
}