FileUploadException: the request was rejected because no multipart boundary was found

这篇具有很好参考价值的文章主要介绍了FileUploadException: the request was rejected because no multipart boundary was found。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Intro

前端使用 form 提交文件到后端。
使用 jquery/axios/fetch 或其他HTTP客户端程序发送HTTP请求,但是后端(Spring框架)报错如下:

Request processing failed; 
nested exception is org.springframework.web.multipartException: Failed to parse multipart servlet request;
nested exception is java.io.IOException: 
org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found

错误原因 & 解决

我是因为设置了 "Content-Type": "multipart/form-data" 这样的头,才会失败。
这个请求头的格式样例(见https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type):

POST /foo HTTP/1.1
Content-Type: multipart/form-data; boundary=---------------------------974767299852498929531610575
...

其中 multipart/form-data 表示请求内容的数据类型,而后的 boundary和值表示发送数据的边界(用于确定文件何时结束 EOF)。
那我加上 boundary 参数?
可是 boundary 的值是由上传文件的大小影响的,我怎么去确定啊?

答案是不用确定。
(程序员)不要发送 Content-Type 这个请求头。

ref: https://stackoverflow.com/questions/35192841/how-do-i-post-with-multipart-form-data-using-fetch

make sure not to set the Content-Type header. The browser will set it for you, including the boundary parameter.
一定不要在发送请求的时候自己用javascript去设置 Content-Type 头!
浏览器会替你自动设置这个请求头的值(包括 bounday 参数)!

FileUploadException: the request was rejected because no multipart boundary was found,Bug,spring,javascript,fetch,axios,form

正确的前端请求方式 MDN

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch#uploading_a_file文章来源地址https://www.toymoban.com/news/detail-692292.html

const formData = new FormData();
const fileField = document.querySelector('input[type="file"]');

formData.append('username', 'abc123');
formData.append('avatar', fileField.files[0]);

fetch('https://example.com/profile/avatar', {
  method: 'PUT',
//   headers: {
//     "Content-Type": "multipart/form-data"	// 我们手动加这个header会导致错误,让浏览器自己去设置这个header即可!
//   },
  body: formData
})
  .then((response) => response.json())
  .then((result) => {
    console.log('Success:', result);
  })
  .catch((error) => {
    console.error('Error:', error);
  });

到了这里,关于FileUploadException: the request was rejected because no multipart boundary was found的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Updates were rejected because the tip of your current branch is behind

    解决Updates were rejected because the tip of your current branch is behind its remote counterpart问题 Git错误提示Integrate the remote changes…的解决方法 Git在push推送时,报错提示信息如下: 原因分析: 是由于本地和远程仓库两者代码文件不同步,因此需要先pull,进行合并然后再进行push 解决方法:

    2024年02月02日
    浏览(44)
  • git 报错:Updates were rejected because the remote contains work that you do问题

    刚开始学习使用git,通过push命令:打算将本地仓库中的文件上传到远端仓库时,报了以下错误: 原因:远程仓库不为空:自己在创建远程仓库的时候,添加了如下两个文件,本地仓库中并没有这两个文件。 解决方法:添加:–allow-unrelated-histories 将远端的本地文件首先拉取到

    2024年02月11日
    浏览(53)
  • git报错:Updates were rejected because the tip of your current branch is behind

    多人协作项目,其他成员提交之后,你这边没有拉取最近代码就要进行推送,远程仓库和本地仓库不同步。 一般远程仓库和本地仓库是同步的,当有另一个人克隆远程仓库并修改推送代码后,你这边的本地仓库再进行推送会提示这个错误。“更新被拒绝,因为您当前分支的提

    2024年02月15日
    浏览(61)
  • The operation was rejected by your operating system. npm ERR! It‘s possible that the file was alrea

    在win10系统下安装node.js出现了如下的报错。 首先需要在安装node.js文件夹中自行创立这两个文件夹,node_global代表全局变量的文件夹,node_cache代表缓存的文件夹。 接下来要配置文件: 这里换成自己的路径即可。 接下来就是配置环境变量: 然后将用户变量中Path,关于node的环

    2024年02月12日
    浏览(38)
  • 成功解决:Updates were rejected because the tip of your current branch is behind its remote...【解决方法】

    最近使用git,一直使用命令行操作。昨天突发奇想研究了一番git的GUI,结果由于操作不当产生了如下报错: Updates were rejected because the tip of your current branch is behind its remote counterpart. 该报错在git push时出现,一句话解释就是你在本地仓库上的修改没有基于远程库最新版本,本地

    2024年02月12日
    浏览(51)
  • 【Github】hint: Updates were rejected because the remote contains work that you do && remote: error: G

    Q: git push 报错 翻译 A:这是因为在上传的时候,远程仓库中有着本地仓库没有的文件(与远程仓库的内容不一致),即导致本地仓库和远程有不同的开始点,也就是两个仓库没有共同的 commit ,所以无法提交,解决方法如下: 参考教程https://www.cnblogs.com/yanhuidj/p/9301328.html 正确的

    2024年02月03日
    浏览(38)
  • npm install安装失败,报错记录之The operation was rejected by your operating system.

    今天在执行 npm install 的时候一直报如下错误:  npm ERR! code EPERM npm ERR! syscall rename npm ERR! path F:Demo Practise一些小demo练习vue练习vue3vue3-demonode_modules@vuecli-service npm ERR! dest F:Demo Practise一些小demo练习vue练习vue3vue3-demonode_modules@vue.cli-service.DELETE npm ERR! errno -4048 npm ERR! Er

    2024年02月03日
    浏览(44)
  • 全网多种方法解决Updates were rejected because the remote contains work that you do not have locally的错误

    今天使用 git status 查看文件状态,发现有一个文件未提交,如下代码所示: 既然未提交,则首先使用 git add 将当前目录下修改的代码,从工作区添加到暂存区,如下代码所示: 接着使用 git commit 将缓存区内容添加到本地仓库,如下代码所示: 但使用 git push origin master 将本地

    2024年02月03日
    浏览(48)
  • 解决gitpush时报错:hint: Updates were rejected because the remote contains work that you do hint: not have

    当我新建了一个git仓库,依次执行 却报错 报这个错是因为远程仓库和本地仓库文件不同步,解决方法是先执行git pull将远程仓库文件拉下来使得远程与本地同步。 解决步骤 1.执行 这里的webbrowser换成你的远程仓库名 执行后会有如下输出 2.再试试重新推送行不行 发现还是报错

    2024年02月16日
    浏览(52)
  • The plain HTTP request was sent to HTTPS port

    异常信息 原因 错误信息 “The plain HTTP request was sent to HTTPS port” 表明客户端尝试使用未加密的HTTP协议发送请求到一个配置为使用加密的HTTPS协议的端口。 解决方案 要解决这个问题,需要确保使用正确的协议和端口号进行请求。应该使用的HTTPS前缀。例如: 错误的请求: ht

    2024年04月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包