前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决

这篇具有很好参考价值的文章主要介绍了前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        本人新手一枚,因为该错误在网上找了许多解决方法都不能解决自己出现的问题,浪费了很多时间,因此记录自己解决该问题的过程,希望能够帮助出现该错误的朋友。

        先说明本人的框架使用,因为网上有许多解决办法,都有不同的框架,因此该方法可能只适用我使用的框架,当然你也可以用我的方法试试。前端使用的是原生javascript,没有使用任何框架,后端使用SpringMVC框架处理请求,但未使用SpringBoot整合,且使用的是全注解方式。

        关于我的错误提示,首先在网上搜寻了很多解决办法,最后都一一实践后发现没有作用,我大概列举一下:

        1、前端参数名与后端获取的参数名不一致(我的是一致的)

        2、前端在请求头"Content-Type"中设置为"multipart/form-data"(关于这点大多数都是使用的jQuery语法,我的是原生javacript,有所不同,但后面我也发现了关于这点的解释)

        接下来我阐述自己解决问题的过程:

        第一步:因为我发的是js的ajax请求模拟前端post请求,一直找不到原因,因此我先从form表单直接发送请求验证原因;

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

        前端使用表单进行文件上传,关键点为需要将enctype设置为multipart/form-data

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

        后端代码如图,在使用全注解时,依然会报Required part 'file' is not present错误,因此我先试用了xml配置的方法,使用xml则需要再web.xml配置文件中加入mutipart-config配置项即可,如下图

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

        配置好以后前端发送请求,后端可以接收到文件信息

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

若没有加上该配置项,则会报错,报错信息如图

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

可以发现该错误不是Required part 'file' is not present,而出现该错误是因为我用了全注解的原因,因此在前端代码不变的情况下,我采用全注解的形式配置SpringMVC,因为网上有说加入一个mutiResolver类的解决方法,因此我也试了,最后发现加和不加都一样,因为我没有用到模板,因此该配置中略去前端模板的配置(已经证明与模板配置无关)

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

然后再次发送请求,得到了Required part 'file' is not present错误,因此可以确定错误是在使用全注解情况下才会发生。

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

第二步:在全注解上找问题

        通过上面分析可以知道,需要在web.xml文件中加入multipart-config才可以在后端接收到前端发送的文件,而如果没有加该配置项,则会报Failed to parse multipart servelet requeset错误,与我的Required part 'file' is not present不相同,而该错误是使用全注解才会发生该错误,因此猜测是某个注解初始化了multipart-config,而我们需要自己配置,因此在网上搜索了如何在SpringMVC中使用全注解方式配置wem.xml中的multipart-config,找了许多都没有完全的解答,我也是一个个对比时间得到了答案。

        首先,因为multipart-config是web.xml配置文件中的配置,因此我们也需要在该配置类中寻找答案,以下是我发生错误时的的web.xml的全注解配置

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

想要在该配置类中进行自定义的multipar-config配置,需要重写customizeRegistration方法,如下图所示

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

在该方法中需要一个自定义配置类,因此需要自己去定义一个类实现MultipartConfig接口

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

最后重新发送请求,请求成功

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

第三步:从上面的讨论知道了是全注解的问题,需要自己配置,但是基于表单提交的,而我的前端请求方式是通过js的ajax异步请求,没有用到表单,而没有表单的情况下需要使用前端的Formdata来发送数据,与表单形式不同,接下来便讨论该种情况

        首先是我的前端代码,就是简单的js发送ajax的基本步骤

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

注意这里我给请求头设置了和表单一样的格式(这里也是发生错误的地方)

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java这是网页呈现的前端效果,后端代码不变,先将自定义的multipa-config注释了看出现了什么问题

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

出现了Required part 'file' is not present错误,接着我将自定义的multipa-config注释取消掉

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

可以看见出现了Failed to parse multipart servelet requeset错误,因此从这里可以得出出现Required part 'file' is not present错误的原因是后端配置问题(当然也有其他原因,这里指出我的主要原因),前面我特意标注了前端ajax请求中将请求头类型改为与form表单一直的信息,而问题就出在这里,我将该信息设置注释掉后请求成功

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决,前端,mvc,java

总结:以上便是我花了一天多的时间才找到的错误根源,每个人情况都不一样,也希望我这篇踩坑文章能够帮到各位文章来源地址https://www.toymoban.com/news/detail-856960.html

到了这里,关于前端文件上传,后端SpringMVC出现Required part ‘file‘ is not present错误解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端将file文件传给后台,后台将文件传给前台(包含上传下载)

    在开发过程中,经常会遇见对文件的处理。 例如:在上传、下载文件时,需要在前端选完文件传到后台传到服务器;或者文件从后台,经过特定需求的处理在返回给前台。 中间处理过程各种各样,但有两个过程是固定的 前端传给后台 后台返回给前端 经常用到的上传就是对

    2024年02月11日
    浏览(54)
  • 【文件上传系列】No.2 秒传(原生前端 + Node 后端)

    【文件上传系列】No.1 大文件分片、进度图展示(原生前端 + Node 后端 Koa) 整理的思路是:根据文件的二进制内容生成 Hash 值,然后去服务器里找,如果找到了,说明已经上传过了,所以又叫做秒传(笑) 接着上一章的内容,因为前端和后端的服务都写在一起了,显得有点凌

    2024年02月05日
    浏览(49)
  • 【Java实现文件上传】java后端+vue前端实现文件上传全过程详解(附源码)

    【 写在前面 】其实这篇文章我早就想写了,只是一直被需求开发耽搁,这不晚上刚好下班后有点时间,记录一下。需求是excel表格的上传,这个是很多业务系统不可或缺的功能点,再此也希望您能够读完我这篇文章对文件上传不再困惑。(文件下载见另外一篇) 涉及知识点

    2024年02月06日
    浏览(54)
  • 生产环境,文件上传出现java.lang. RuntimeException: java.nio.file. NoSuchFileException解决方法

    在SpringBoot项目中,配置spring.http.multipart.location可以指定上传文件的临时路径。 但是,SpringBoot版本不同,关于这一块的配置也不相同。 1、Spring Boot 1.3 版本: multipart.location=/data/tmp 2、Spring Boot 1.4 版本和 1.5 版本: spring.http.multipart.location=/data/tmp 3、Spring Boot 2.0 版本: spring.s

    2024年02月10日
    浏览(51)
  • 后端:使用easyExcel实现解析Excel文件读取数据。前端:Excel模板下载、前端上传文件

            本篇是EasyExcel快速入门知识,讲解如何读取Excel文件,对Excel中错误信息如空字符、必填项为空、表格格式校验做到处理 ,并给出了实际项目中示例代码;为什么要使用easyexcel;原因是相比于poi,easyexcel更加轻量级,读取写入API方便,并且在工作中占用内存较小;

    2024年02月05日
    浏览(76)
  • elementUI自定义上传文件 前端后端超详细过程

    下面是使用Element UI自定义上传文件的前后端详细过程: 前端过程: 引入Element UI组件库:在前端项目中引入Element UI库,可以通过CDN引入或者通过npm安装并导入。 创建上传组件:在前端代码中创建一个上传组件,可以使用 el-upload 组件来实现文件上传功能。在组件中设置上传

    2024年02月11日
    浏览(44)
  • elementUI自定义上传文件(前端后端超详细过程)

    elementUI自定义上传文件(前端后端超详细过程) 简介 : 自定义 上传文件并与其他参数一同提交到后台( 主要使用axios ) 简单介绍组件( upload)的属性(熟悉参数的直接略过) 总结elmentUI一下它的使用和常用属性的作用。 主要目的自定义上传文件 2.1 组件代码 2.2 data中的属性

    2024年02月02日
    浏览(42)
  • 前端上传的文件,后端将如何进行存储以及回显

    完成文件上传这个功能需要涉及到两个部分: 前端程序 服务器程序 文件上传后将如何进行储存 本地磁盘储存 云服务器oss储存 ##后端项目创建 创建springboot工程,引入对应的起步依赖(web、mybatis、mysql驱动、lombok) 配置文件application.properties中引入mybatis的配置信息,准备对应

    2024年02月04日
    浏览(45)
  • 大文件上传demo,前端基于Uppy,后端基于koa

    文件上传基本上所有的管理系统之类的项目都有这么一个功能。因为使用了 Element ,可以方便的使用 其提供的 Upload 组件,对于普通上传来说基本上就够用了。但是有时候会涉及到大文件上传的需求,这时就会面临一些问题:比如文件上传超时。 自己做的话很麻烦,需要考虑

    2024年02月09日
    浏览(41)
  • 前端vue elementUI upload上传组件封装&多文件上传&进度条,后端servlet request.getPart()接收文件信息

    选中多个文件上传 通过 axios请求 onUploadProgress 方法监听 on-progress on-success 用这两个钩子函数实现进度条 下面有对应的函数。 本文是每个文件一个请求上传 也可以用一个请求上传多个文件,需要将文件遍历添加到 form 表单中,后端用 request.getParts(); 获取集合,有需要的可以改

    2024年02月11日
    浏览(58)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包