最近項目在使用ant design vue 的時候,使用了a-upload 上傳圖片。 但是遇到了不少問題,在此總結一下。
問題1. 上傳圖片后,鼠標懸浮或出現代碼錯誤提示 “405 Not Allowed”
處理方法: 查了一下,參考了這篇文章 https://blog.csdn.net/Y_G_G/article/details/108105884。結合本地的代碼看了一下,將原來的change事件上傳修改為了使用 customRequest 自定義事件。問題得以解決。
不過,處理完之后也確實遇見了文件狀態一直處於uploading 的問題。這里我將上傳方法單獨抽取了出來,所以執行上傳,在axios能正常返回存儲路徑后,則修改文件狀態
//修改status options.onSuccess(res, options.file)
這樣能暫時處理掉一直顯示uploading狀態的問題。
問題2:點擊上傳圖片后無反應 。修改前代碼:
//默認change方法 handleChange (info) { if(info.file.status == "done"){ this.fileList = info.fileList; } }
a-upload上使用了customRequest 自定義方法,同樣也綁定了change方法,因為調用完customRequest方法,會繼續調用change方法,所以打算執行完customRequest上傳后,通過change方法對fileList進行賦值,回顯剛上傳的圖片。
處理: 檢查后發現,之前在change方法中對status進行了判斷,在執行上傳時(使用axios)文件的狀態一直是uploading。在axios未返回結果之前,就調用了change方法,但是change方法中判斷只有status為done時,才會進行fileList的賦值,實際的操作中回發現,這樣即使是在最后status為done時,也不會再進入到handleChange這個方法。
這個時候就需要用到上面說的,對文件上傳轉態進行修改。在路徑返回后,在change方法中不有需要再對status進行判斷,直接fileList賦值就可以了。
handleChange(info){ this.fileList = info.fileList; }