ant-design form multipart/form-data

目前公司前端使用 React 、Ant - Design
最近有個需求 :表單除了input 、 select 外還有上傳圖片的欄位,上傳圖片的部分使用了 antd 的 Upload ,踩了一些坑,在這裡紀錄一下實作方法。


為了馬上看到上傳的圖片而使用 照片牆

問題點 :預(yù)設(shè)是點擊選擇圖片後就馬上上傳,而不是選擇圖片後跟著表單所有內(nèi)容被submit 才上傳

解決辦法:beforeUpload

handleBeforeUploadFile = (file) => {
  // 使用 beforeUpload 會失去在選擇圖片後馬上看到圖片的功能,因此利用FileReader方法來實現(xiàn)預(yù)覽效果
  let reader = new FileReader();
  reader.readAsDataURL(file);
  reader.onloadend = function () {
    this.setState({fileList: [{uid: file.uid, url: reader.result}],image:reader.result})
  }.bind(this);
    // 使用 beforeUpload 回傳 false 可以停止上傳
    return false
}

需要使用multipart/form-data

為了可以送出 file (圖片)使用 multipart/form-data,因為使用 antd 不在 Form 標籤加 enctype="multipart/form-data", 之前也曾設(shè)定 Content-Type ,但是行不通。
解決辦法還是 new formData(),在調(diào)用 api 時傳入 formData 。

* 注意* 不可以 JSON.stringify(formData) , 要直接傳formData
let formData = new FormData();   
// fields 是表單內(nèi)容,將它 append 到 formData         
Object.keys(fields).map((item) => {
  formData.append(item,fields[item])
}) 

還有其他在 form 卡住的關(guān)卡,筆記後補...

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容