java前后分离使用fetch上传文件失败500

这次不是写什么技术要点,仅仅是记录一下 最近遇到的一个问题

背景

使用fetch向java后台上传文件时,前端调试报错500,后端的报错为multipart 无法解析,翻译过来大概是这个意思。

由于本人不会java所以这里只是记录一下前端的注意事项。

原因

问题的主要原因在于,我在上传时设置了contenttype,这里就不得不提一下,fetch中由于之前使用的时候如果我不设置contenttype那么我向后端传送json时就会报错。

因为contenttype本来就是用于设置http的格式的,所以我在上传之前手动的在配置里设置了contenttype 为 multipart/form-data。

没想到问题就出在这里,当我们手动设置后fetch将不再为form-data自动添加文件边界,所以造成后端无法解析。

其实这个问题在使用ajax时也是存在的,不知道大家记不记得在使用jq的ajax上传时要设置这样的两个属性:

contentType: false, // false即不设置contenttype
processData: false // 是否对参数进行序列化处理

contentType设为false即不设置本次http请求的contentType,而下面的processData则是不让jq处理我们在data中添加的数据,

否则ajax会在传输之前使用JSON.stringify()方法帮我们将数据转为json字符串

解决

最后的fetch上传成功的配置如下:

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

上传时千万不要自己设置contenttype,不要设置!不要设置!!

原文地址:https://www.cnblogs.com/lhyxq/p/9876442.html

时间: 2024-08-25 23:06:54

java前后分离使用fetch上传文件失败500的相关文章

本地虚拟机中匿名ftp上传文件失败的问题

在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload 227 Entering Passive Mode (10,10,50,230,117,8). 553 Could not create file.   由于搭建步骤是完全按照标准文档建立的,vsftp.conf的设置应该没有问题,检查:getsebool -a|grep ftp 发现: allow

JAVA模拟HTTP post请求上传文件

在开发中,我们使用的比较多的HTTP请求方式基本上就是GET.POST.其中GET用于从服务器获取数据,POST主要用于向服务器提交一些表单数据,例如文件上传等.而我们在使用HTTP请求时中遇到的比较麻烦的事情就是构造文件上传的HTTP报文格式,这个格式虽说也比较简单,但也比较容易出错.今天我们就一起来学习HTTP POST的报文格式以及通过Java来模拟文件上传的请求. 首先我们来看一个POST的报文请求,然后我们再来详细的分析它. POST报文格式 [plain] view plain co

服务器上传文件出现500错误,但是其他不涉及文件的接口均正常

出现的情景描述: 1.有用户报告说注册无法成功,经过前端的盘查发现实在注册的时候必须调用的上传文件的接口A抛出500错误,但不是每次都抛出不过有很大几率抛出500. 2.A接口接受5个参数和一个文件multi类型,至传递前5个参数能够请求到代码,但是传入文件之后不是500错误就是很长时间超时. 3.重启nginx无效,问题依旧.重启fpm无效,问题依旧. 4.机器很久没有启动过了top显示内存占用较高于是重启机器.重启机器问题消失,A接口正常工作,15分钟后再次出现问题且症状依旧. 5.ngin

rz 上传文件失败

转载自: http://blog.csdn.net/heavendai/article/details/7549065 在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要如下处理. 单独用rz会有两个问题:上传中断.上传文件变化(md5不同), 解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的

SecureCRT rz 上传文件失败问题

在把Windows上的文件传至Linux端时用到SecureCRT,一般小文件都没有问题,文件太大时则出现了上传后的文件只有几K大小,当然大于2个G的是不可能传的上去的了.对于几百M到1G多的大文件要如下处理. 单独用rz会有两个问题:上传中断.上传文件变化(md5不同), 解决办法是上传是用rz -be,并且去掉弹出的对话框中“Upload files as ASCII”前的勾选. -a, –ascii-b, –binary 用binary的方式上传下载,不解释字符为ascii-e, –esc

SecureCRT上传文件失败的解决方法

以前用老版的secureCRT,上传大文件经常失败,要不是心疼我的机械键盘,不知道砸了多少次了. 所以,不要再管什么-a,-e,-b,-y了,直接换新版的secureCRT吧 我换了新版之后上传文件变得顺畅多了,砸键盘的冲动一下就没有了. 把我找的绿色版分享给大家.里面自带注册机. 链接:http://pan.baidu.com/s/1gfbnpkR 密码:p9y6 打开secureCRT之后,随便输入点东西进入到下一步,然后在注册机里生成一系列码, 在secureCRT中选择输入其他内容,就可

Selenium 上传文件失败,解决办法一

昨个改程序遇到一个问题,UI上面有需要上传文件的地方.但是我不知道怎么让Selenium完成 点击上传文件按钮->在弹出的文件选择窗口中选择路径和文件,点确定. 要知道弹出窗口属于window的范畴,Selenium只能处理Web page. Jeremy原先的代码用的是Selenium RC中的 type “filepath+filename”方法.可不知咋搞的反正运行到这里是进行不下去了. 正好借这个机会来研究一下在Webdriver里怎么做. 我自己写了个网页,里面就一句 我先是用Sele

IIS8中 出现ashx 401:未授权,uploadify上传文件失败

环境:阿里云服务器 windows2012  + IIS8 +asp.net 访问IIS 出现能正常访问aspx页面,但是通过ajax访问ashx上传文件的时候就出现ashx  Status Code:401 Unauthorized. 检查ashx所在文件夹.上传文件夹的IIS_USR权限也都是有的,而且ashx也能正常访问返回数据. 突然看到博客上介绍需要IUSR权限, 操作方法: 在需要上传的文件夹上面,右键->属性->安全->编辑->添加->[输入对象名称IUSR],

使用UpdatePanel时FileUpload失效的问题!【FileUpload上传文件失败】

1.使用UpdatePanel后,FileUpload的HasFile始终为false,无论你是否选中了上传文件! 方案一:设置ScriptManager 的EnablePartialRendering="false" 即可! 缺点:同一个页面上的多个UpdatePanel不可以独自刷新了.另外,当你的UpdatePanel中存在Validator (验证控件)的话,会造成整个页面postback <asp:ScriptManager ID="ScriptManager