最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

axios上傳文件錯誤:Current?request?is?not?a?multipart?request解決

 更新時間:2023年01月06日 10:05:56   作者:obscure?mood  
最近工作中使用vue上傳文件的時候遇到了個問題,下面這篇文章主要給大家介紹了關(guān)于axios上傳文件錯誤:Current?request?is?not?a?multipart?request解決的相關(guān)資料,需要的朋友可以參考下

報(bào)錯信息

其實(shí)整個過程我一共經(jīng)歷了三個報(bào)錯信息,分別是

1.Current request is not a multipart request:當(dāng)前請求不是multipart 請求

2.the request was rejected because no multipart boundary was found:請求被拒絕,因?yàn)槲凑业蕉嗖糠诌吔?/p>

3.Required request part ‘files’ is not present

報(bào)錯產(chǎn)生的程序

我是想在vue中實(shí)現(xiàn)一個上傳文件的功能,采用axios方式上傳,數(shù)據(jù)模式采用formdata。

然后就產(chǎn)生了各種錯誤。

錯誤解決

Current request is not a multipart request:

這個錯誤是因?yàn)楹蠖俗x取MultipartFile 類型數(shù)據(jù)時,對申請頭的類型進(jìn)行了一個判斷,他只識別 multipart 開頭的 Content-Type。所以我們需要修改headers 的 Content-Type。

但是手動添加headers會產(chǎn)生 第二個錯誤。所以建議使用formdata 的方式,參數(shù)為formdata 時,瀏覽器會自動添加一個標(biāo)準(zhǔn)的headers。

錯誤:會引發(fā)新的錯誤

var request({
        url: 地址,
        method: 'post',
        headers:{'Content-Type': 'multipart/form-data'},
        data: formdata,
    })

正確:

	let format = new window.FormData();
	format.append("file",files[0].raw)
	let res = await api.test(format)
	var options({
	        url: 地址,
	        method: 'post',
	        data: formdata,
	    })
	axios(options).then((res) => {console.log(res)})

當(dāng)然要保證format的key要和后端接收參數(shù)的名稱保持一致,不然會引發(fā)第三個錯誤。
(對了,正常 let format = new FormData();就可以,但一些vue情況下可能會報(bào)錯找不到FormData ,就可以試試new window.FormData();)

新的問題

正常情況下此時瀏覽器會自動修改headers的Content-Type,但是我的請求頭的類型依舊沒有變化,經(jīng)過進(jìn)一步研究,發(fā)現(xiàn)axios在請求發(fā)送出去之前會進(jìn)行一次攔截,自動給我們的請求設(shè)置一些參數(shù)。所以我們需要修改一下不讓它在修改。最重結(jié)果為

	let format = new window.FormData();
	format.append("file",files[0].raw)
	let res = await api.test(format)
	var options({
	        url: 地址,
	        method: 'post',
	        data: formdata,
	         transformRequest: [function(data, headers) {
            // 去除post請求默認(rèn)的Content-Type
            delete headers.post['Content-Type']
            return data
          }],
	    })
	axios(options).then((res) => {console.log(res)})

2.the request was rejected because no multipart boundary was found

這是因?yàn)檎5?Content-Type是這樣的

Content-Type: multipart/form-data; boundary=----WebKitFormBoundarywdz99kUqBwK48chO

后面會有一個自動生成的boundary來作為分隔符,而人工寫的是沒有的,也很難人工生成。
所以如果想使用multipart/form-data 的話,建議不要人工添加,使用FormData 是較好的辦法。

3.Required request part ‘files’ is not present

這個問題有很多可能性,其中最常見的就是

public void upload(@RequestParam("files") MultipartFile file) throws Exception {
	System.out.println(file.getOriginalFilename());
}
let format = new window.FormData();
	format.append("file",files[0].raw)

后端接受文件的名稱和前端formdata的key鍵不相同,修改為相同就好。

其他還有可能是前端傳參問題,參數(shù)可能并沒有傳送到后端,或者也可能是因?yàn)镃ontent-Type的不同導(dǎo)致讀取文件方式不同。

我產(chǎn)生這個報(bào)錯是因?yàn)镃ontent-Type 不是’multipart/form-data’ ,但是無法通過RequestParam方法獲得formdata中的數(shù)據(jù)(接收和傳入的參數(shù)不是文件類型)。

總結(jié)

到此這篇關(guān)于axios上傳文件錯誤:Current request is not a multipart request解決的文章就介紹到這了,更多相關(guān)axios上傳文件錯誤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解vue過濾器在v2.0版本用法

    詳解vue過濾器在v2.0版本用法

    本篇文章主要介紹了vue過濾器在v2.0版本用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • vue3?ts編寫echart是tooltip無法展示的解決

    vue3?ts編寫echart是tooltip無法展示的解決

    這篇文章主要介紹了vue3?ts編寫echart是tooltip無法展示的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue router的addRoute方法實(shí)現(xiàn)控制權(quán)限方法詳解

    Vue router的addRoute方法實(shí)現(xiàn)控制權(quán)限方法詳解

    這篇文章主要介紹了vue動態(tài)路由添加,vue-router的addRoute方法實(shí)現(xiàn)權(quán)限控制流程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-09-09
  • vant-list上拉加載onload事件觸發(fā)多次問題及解決

    vant-list上拉加載onload事件觸發(fā)多次問題及解決

    這篇文章主要介紹了vant-list上拉加載onload事件觸發(fā)多次問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Mint UI實(shí)現(xiàn)A-Z字母排序的城市選擇列表

    Mint UI實(shí)現(xiàn)A-Z字母排序的城市選擇列表

    這篇文章主要為大家詳細(xì)介紹了Mint UI實(shí)現(xiàn)A-Z字母排序的城市選擇列表,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • Vue中事件總線(eventBus)的深入詳解及使用

    Vue中事件總線(eventBus)的深入詳解及使用

    在vue項(xiàng)目中父子組件間的通訊很方便,但兄弟組件或多層嵌套組件間的通訊,就會比較麻煩,這時使用eventBus通訊,就可以很便捷的解決這個問題,這篇文章主要給大家介紹了關(guān)于Vue中事件總線(eventBus)使用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • Vue+scss白天和夜間模式切換功能的實(shí)現(xiàn)方法

    Vue+scss白天和夜間模式切換功能的實(shí)現(xiàn)方法

    這篇文章主要介紹了Vue+scss白天和夜間模式切換功能的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Vue左滑組件slider使用詳解

    Vue左滑組件slider使用詳解

    這篇文章主要為大家詳細(xì)介紹了Vue左滑組件slider的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 在vue.js中使用JSZip實(shí)現(xiàn)在前端解壓文件的方法

    在vue.js中使用JSZip實(shí)現(xiàn)在前端解壓文件的方法

    今天小編就為大家分享一篇在vue.js中使用JSZip實(shí)現(xiàn)在前端解壓文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue post application/x-www-form-urlencoded如何實(shí)現(xiàn)傳參

    vue post application/x-www-form-urlencoded如何實(shí)現(xiàn)傳參

    這篇文章主要介紹了vue post application/x-www-form-urlencoded如何實(shí)現(xiàn)傳參問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論

平顺县| 革吉县| 湘阴县| 抚顺县| 广河县| 长乐市| 巴中市| 北安市| 临清市| 迭部县| 龙游县| 肇东市| 邹平县| 广元市| 忻城县| 香港| 高州市| 衡东县| 邯郸市| 丰镇市| 宝清县| 靖州| 郁南县| 东至县| 门头沟区| 嘉善县| 积石山| 博爱县| 长春市| 喀喇| 阿合奇县| 红原县| 论坛| 南澳县| 广河县| 分宜县| 宜黄县| 赫章县| 旅游| 灵石县| 称多县|