位置: IT常识 - 正文

axios上传文件错误:Current request is not a multipart request(axios提交文件)

编辑:rootadmin
axios上传文件错误:Current request is not a multipart request 报错信息

推荐整理分享axios上传文件错误:Current request is not a multipart request(axios提交文件),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:文件上传过程中出现i/o错误,上传文件报错,上传文件io错误是什么意思,axios提交文件,上传文件显示io错误,axios提交文件,上传文件报错,上传文件报错,内容如对您有帮助,希望把文章链接给更多的朋友!

其实整个过程我一共经历了三个报错信息,分别是 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中实现一个上传文件的功能,采用axios方式上传,数据模式采用formdata。

然后就产生了各种错误。

错误解决Current request is not a multipart request:

这个错误是因为后端读取MultipartFile 类型数据时,对申请头的类型进行了一个判断,他只识别 multipart 开头的 Content-Type。所以我们需要修改headers 的 Content-Type。

但是手动添加headers会产生 第二个错误。所以建议使用formdata 的方式,参数为formdata 时,浏览器会自动添加一个标准的headers。

错误:会引发新的错误

var request({ url: 地址, method: 'post', headers:{'Content-Type': 'multipart/form-data'}, data: formdata, })axios上传文件错误:Current request is not a multipart request(axios提交文件)

正确:

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要和后端接收参数的名称保持一致,不然会引发第三个错误。 (对了,正常 let format = new FormData();就可以,但一些vue情况下可能会报错找不到FormData ,就可以试试new window.FormData();)

新的问题

正常情况下此时浏览器会自动修改headers的Content-Type,但是我的请求头的类型依旧没有变化,经过进一步研究,发现axios在请求发送出去之前会进行一次拦截,自动给我们的请求设置一些参数。所以我们需要修改一下不让它在修改。最重结果为

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键不相同,修改为相同就好。

其他还有可能是前端传参问题,参数可能并没有传送到后端,或者也可能是因为Content-Type的不同导致读取文件方式不同。

我产生这个报错是因为Content-Type 不是’multipart/form-data’ ,但是无法通过RequestParam方法获得formdata中的数据(接收和传入的参数不是文件类型)。

本文链接地址:https://www.jiuchutong.com/zhishi/288982.html 转载请保留说明!

上一篇:阿尔瓦拉辛,西班牙 (© Domingo Leiva/Getty Images)(阿尔瓦罗西萨)

下一篇:【2023-Pytorch-检测教程】手把手教你使用YOLOV5做电线绝缘子缺陷检测

  • word文档怎么插图片进去(word文档怎么插图片到表格中)

    word文档怎么插图片进去(word文档怎么插图片到表格中)

  • sandboxie是什么(sandboxed)

    sandboxie是什么(sandboxed)

  • 天正建筑2014支持什么版本的cad(天正建筑2014支持cad2020吗)

    天正建筑2014支持什么版本的cad(天正建筑2014支持cad2020吗)

  • 微信动态无法删除(微信动态为什么删不了)

    微信动态无法删除(微信动态为什么删不了)

  • 鼠标电池能用多长时间(鼠标电池用多久没电)

    鼠标电池能用多长时间(鼠标电池用多久没电)

  • 栈先进先出还是先进后出(栈是后进先出吗)

    栈先进先出还是先进后出(栈是后进先出吗)

  • 手机wifi的dns异常怎么办(wifi显示dns异常怎么用手机修复)

    手机wifi的dns异常怎么办(wifi显示dns异常怎么用手机修复)

  • 手机上怎么叫代驾(手机怎么叫代价)

    手机上怎么叫代驾(手机怎么叫代价)

  • 手机qq总是获取地理位置失败(手机qq总是获取位置信息)

    手机qq总是获取地理位置失败(手机qq总是获取位置信息)

  • eml是什么文件格式(eml文件是病毒么)

    eml是什么文件格式(eml文件是病毒么)

  • qq一起听歌怎么开启(qq一起听歌怎么添加歌曲)

    qq一起听歌怎么开启(qq一起听歌怎么添加歌曲)

  • 苹果官网退货签收验货要多久(苹果官网退货签收了,订单状态怎么没更新)

    苹果官网退货签收验货要多久(苹果官网退货签收了,订单状态怎么没更新)

  • 苹果11max上网太慢的原因(iphone 11上网很慢)

    苹果11max上网太慢的原因(iphone 11上网很慢)

  • 拼多多精品推荐消除(拼多多精品推荐内容怎么换)

    拼多多精品推荐消除(拼多多精品推荐内容怎么换)

  • 小米多亲是小米的吗(小米多亲质量怎么样)

    小米多亲是小米的吗(小米多亲质量怎么样)

  • 乐视手机怎么设置后台应用自启(乐视手机怎么设置屏幕常亮)

    乐视手机怎么设置后台应用自启(乐视手机怎么设置屏幕常亮)

  • 乐视2怎么改日历日期(乐视2设置锁屏时间设置在哪里)

    乐视2怎么改日历日期(乐视2设置锁屏时间设置在哪里)

  • t480和t480s区别(t480 480s区别)

    t480和t480s区别(t480 480s区别)

  • pbem00是什么手机型号(oppo手机pelm00是什么型号)

    pbem00是什么手机型号(oppo手机pelm00是什么型号)

  • 搜狗浏览器如何截图(搜狗浏览器如何取消拦截网站)

    搜狗浏览器如何截图(搜狗浏览器如何取消拦截网站)

  • 网页自动弹出或不定时弹出的解决方法?(网页老是自己跳出来)

    网页自动弹出或不定时弹出的解决方法?(网页老是自己跳出来)

  • netsurf.exe - netsurf是什么进程 有什么用

    netsurf.exe - netsurf是什么进程 有什么用

  • import sklearn出现报错,如何正确安装sklearn(sklearn报错)

    import sklearn出现报错,如何正确安装sklearn(sklearn报错)

  • Dedecms Ask问答系统Rewrite规则(官方的问答)

    Dedecms Ask问答系统Rewrite规则(官方的问答)

  • 什么情况增值税计入成本
  • 金税盘数据怎么备份
  • 单位内部食堂如何做账务处理
  • 金蝶软件发票录入什么科目
  • 季度不超过30万是含税还是不含税
  • 营业收入大于资产总计和主营业务收入之和什么原因
  • 怎么看自己公司是一般纳税人还是小规模纳税人
  • 贷款利息收入的税率是多少
  • 什么情况下要做试管怀孕
  • 营改增后转让土地使用权交什么税
  • 高新技术企业季报填报
  • 建筑工程劳保费返还给项目部吗
  • 纳税人经营所得预缴申报表怎么填
  • 个人转让商铺个人所得税核定征收
  • 账务核对有账表核对吗
  • 办理企业所得税汇算清缴的期限是
  • 销售奖金怎么做会计分录
  • 分期收款销售商品确认收入会计分录
  • 没有预收账款应该用什么科目核算
  • 学校捐赠收入需上交吗
  • 应交税费待抵扣进项税额
  • 我公司只开了普票未开专票是否需要发票认证?
  • 小规模企业跨季报税流程
  • 有开发票就要交印花税吗?
  • 免税发票有几种类型
  • 红字发票打印乱码怎么办
  • 代收车船税是什么意思必须收吗
  • 年终奖个人所得税怎么扣
  • 建筑服务简易征收可以开专票吗
  • 开立银行承兑汇票清单怎么盖章
  • 苹果手机电池低于多少需要更换
  • 销售费用营业费用的区别
  • mac怎么同步
  • realjbox.exe - realjbox是什么进程 作用是什么
  • 多付货款退回的法律依据
  • Win10怎么显示文件类型
  • 职工教育经费超过扣除限额的时候调增还是调减
  • php fetchall
  • 医院产生的相关法律法规
  • thinkphp上传文件
  • 城建税教育费附加什么时候交
  • 销售赔偿款增值税和所得税
  • vue获取value值
  • js添加方法
  • bluetooth hci0 command timeout
  • journal.tmp
  • 哪些情形视同从境外取得收入:
  • 营业执照类型的区别是什么
  • 定额发票验旧日期怎么算
  • 物业合并利润表怎么填
  • 银行借记和贷记一样吗
  • 营运资金周转率是什么指标
  • 误餐补助需要提供发票吗
  • 其他应付款如何平账
  • 过渡期补贴是什么意思
  • 出口企业样品收入分录
  • 增值税税率调整后,合同价应该调整吗
  • 银行利息收入怎么计算
  • 租赁动迁补偿条款
  • 按照现行会计制度的规定,下列票据中
  • 外贸企业的汇率怎么算
  • 成本费用占营业收入比重
  • 会计账簿的设计要与会计报表相衔接 ()X
  • 会计备注一般写什么
  • 升级win8.1 64位系统后无法玩剑灵怎么办?win8.1系统无法玩剑灵的解决方法
  • macos sierra怎么样
  • centos怎么查看文件
  • solaris的多线程实现方式
  • fdisk 分区表
  • SPBBCSvc.exe - SPBBCSvc进程是什么文件 有什么作用
  • win8系统没有自带的游戏吗
  • easyui grid
  • 家字取名男孩名字
  • jquery添加兄弟元素
  • node.js详解
  • jquery简单例子
  • sqlyog使用
  • 申请小规模纳税人公司需要多久
  • 个人所得税税单去哪里打印
  • 2022年中国烟草营收
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设