java先後分離使用fetch上傳文件失敗500

此次不是寫什麼技術要點,僅僅是記錄一下 最近遇到的一個問題前端

 

背景

使用fetch向java後臺上傳文件時,前端調試報錯500,後端的報錯爲multipart 沒法解析,翻譯過來大概是這個意思。java

因爲本人不會java因此這裏只是記錄一下前端的注意事項。ajax

 

緣由

問題的主要緣由在於,我在上傳時設置了contenttype,這裏就不得不提一下,fetch中因爲以前使用的時候若是我不設置contenttype那麼我向後端傳送json時就會報錯。json

由於contenttype原本就是用於設置http的格式的,因此我在上傳以前手動的在配置裏設置了contenttype 爲 multipart/form-data。後端

沒想到問題就出在這裏,當咱們手動設置後fetch將再也不爲form-data自動添加文件邊界,因此形成後端沒法解析。app

其實這個問題在使用ajax時也是存在的,不知道你們記不記得在使用jq的ajax上傳時要設置這樣的兩個屬性:post

contentType: false, // false即不設置contenttype
processData: false // 是否對參數進行序列化處理

contentType設爲false即不設置本次http請求的contentType,而下面的processData則是不讓jq處理咱們在data中添加的數據,fetch

不然ajax會在傳輸以前使用JSON.stringify()方法幫咱們將數據轉爲json字符串spa

 

解決

最後的fetch上傳成功的配置以下:翻譯

var options  = {
                "method": 'post',
                "credentials": "include",
                "headers": {
                    'Accept': 'application/json'
                }
            };

 

上傳時千萬不要本身設置contenttype,不要設置!不要設置!!

相關文章
相關標籤/搜索