欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

報錯信息

其實整個過程我一共經歷了三個報錯信息,分別是

1.Current request is not a multipart request:當前請求不是multipart 請求

2.the request was rejected because no multipart boundary was found:請求被拒絕,因為未找到多部分邊界

3.Required request part ‘files’ is not present

報錯產生的程序

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

然后就產生了各種錯誤。

錯誤解決

Current request is not a multipart request:

這個錯誤是因為后端讀取MultipartFile 類型數(shù)據時,對申請頭的類型進行了一個判斷,他只識別 multipart 開頭的 Content-Type。所以我們需要修改headers 的 Content-Type。

但是手動添加headers會產生 第二個錯誤。所以建議使用formdata 的方式,參數(shù)為formdata 時,瀏覽器會自動添加一個標準的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)})

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

新的問題

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

	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請求默認的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

這是因為正常的 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ù)可能并沒有傳送到后端,或者也可能是因為Content-Type的不同導致讀取文件方式不同。

我產生這個報錯是因為Content-Type 不是’multipart/form-data’ ,但是無法通過RequestParam方法獲得formdata中的數(shù)據(接收和傳入的參數(shù)不是文件類型)。

總結

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

相關文章

  • Vue封裝的可編輯表格插件方法

    Vue封裝的可編輯表格插件方法

    今天小編就為大家分享一篇Vue封裝的可編輯表格插件方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • Vue.js手風琴菜單組件開發(fā)實例

    Vue.js手風琴菜單組件開發(fā)實例

    這篇文章主要為大家詳細介紹了Vue.js手風琴菜單組件開發(fā)實例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • 利用Vue3實現(xiàn)一個可以用js調用的組件

    利用Vue3實現(xiàn)一個可以用js調用的組件

    最近遇到個功能要求,想要在全局中調用組件,而且要在某些js文件內調用,所以這篇文章主要給大家介紹了關于如何利用Vue3實現(xiàn)一個可以用js調用的組件的相關資料,需要的朋友可以參考下
    2021-08-08
  • vue v-model的用法解析

    vue v-model的用法解析

    這篇文章主要介紹了v-model的基本用法解析,幫助大家更好的理解和學習vue v-model的使用方法,感興趣的朋友可以了解下
    2020-10-10
  • vue3如何實現(xiàn)掛載并使用axios

    vue3如何實現(xiàn)掛載并使用axios

    這篇文章主要介紹了vue3如何實現(xiàn)掛載并使用axios,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • VUE表格顯示錯位的兩種解決思路分享

    VUE表格顯示錯位的兩種解決思路分享

    這篇文章主要介紹了VUE表格顯示錯位的兩種解決思路,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Vue+axios封裝請求實現(xiàn)前后端分離

    Vue+axios封裝請求實現(xiàn)前后端分離

    這篇文章主要為大家詳細介紹了Vue+axios封裝請求實現(xiàn)前后端分離,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • vue事件監(jiān)聽函數(shù)on中的this指針域使用

    vue事件監(jiān)聽函數(shù)on中的this指針域使用

    這篇文章主要介紹了vue事件監(jiān)聽函數(shù)on中的this指針域使用方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue如何獲取當前url地址加端口號

    vue如何獲取當前url地址加端口號

    這篇文章主要介紹了vue如何獲取當前url地址加端口號問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • vue關于Promise的使用方式

    vue關于Promise的使用方式

    這篇文章主要介紹了vue關于Promise的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06

最新評論