記一次ElementUI上傳文件,Current request is not a multipart request與the request was rejected because no multipart boundary was found


1.前端代碼(ElementUI)

<template>
  <el-upload
      class="upload-demo"
      ref="upload"
      drag
      action=""
      :limit="1"
      :multiple="true"
      :auto-upload="false"
      :http-request="uploadFileToServer"
      multiple>
    <i class="el-icon-upload"></i>
    <div class="el-upload__text">將文件拖到此處,或<em>點擊上傳</em></div>
    <div class="el-upload__tip" slot="tip">只能上傳jpg/png文件,且不超過500kb</div>
  </el-upload>
</template>
<script>
  uploadFileToServer(file){
    let formData = new FormData();
    formData.append('file', file.file);
    this.$http.upload('/onlineFile/test',formData).then(e=> {
      console.log(e,"66666");
    })
  },
</script>

2.后端代碼(Spirngboot)

@PostMapping("/test")
public void test(@RequestParam("file") MultipartFile file){
    System.out.println(777);
    System.out.println(file);
}
  • 上傳代碼中不要設置請求頭
# 不要設置這個
headers: {
    'Content-Type': 'multipart/form-data'
}

Axios檢測到當前請求是formData請求時會刪掉Content-Type,如果自己加這個的話會報the request was rejected because no multipart boundary was found錯誤
原因是:不加的話瀏覽器自動處理表單請求
請求頭是這樣的

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

加的話

Content-Type: multipart/form-data;

后端加上 @RequestParam("file") 用來接收formData中的值,多個值寫多個@RequestParam("file")

請求體中不要加 {} ,new ForData()對象,賦值,將formData直接放到入參對象位置

正確示例

uploadFileToServer(file){
    let formData = new FormData();
    formData.append('file', file.file);
    this.$http.upload('/onlineFile/test',formData).then(e=> {
      console.log(e,"66666");
    })
  },

錯誤示例

uploadFileToServer(file){
    this.$http.upload('/onlineFile/test',{
    file:file.file
  }).then(e=> {
    console.log(e,"66666");
  })
},
uploadFileToServer(file){
    let config = {
        headers: {
          'Content-Type': 'multipart/form-data'
        } 
    }
    this.$http.upload('/onlineFile/test',{
      file:file.file
    },config).then(e=> {
      console.log(e,"66666");
    })
},
uploadFileToServer(file){
    let formData = new FormData();
    formData.append('file', file.file);
    this.$http.upload('/onlineFile/test',{
      file: formData
    }).then(e=> {
      console.log(e,"66666");
    })
},
uploadFileToServer(file){
    let formData = new FormData();
    formData.append('file', file.file);
    this.$http.upload('/onlineFile/test',{
      formData
    }).then(e=> {
      console.log(e,"66666");
    })
},


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM