上传失败缺少请求参数file

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了上传失败缺少请求参数file相关的知识,希望对你有一定的参考价值。

参考技术A 通常此类问题是因为前后端参数key不一致。
spring框架对于MultipartFile参数的解析器有两个,从实现上看他们获取文件key值的方式不一致。
没有特殊指定时,spring使用StandardServletMultipartResolver,此次问题就是由于后端在代码中指定了另外一种解析方式CommonsMultipartResolver,导致无法获取上传文件,将此bean注释即可。

Jmeter上传文件一直失败

参考技术A 基本的参数为:1、上传文件勾选form-data,这是必须勾选的;文件名称必须写全路径(如果与jmx文件不在同一目录下),否则会报错找不到文件,参数名称写file;mime类必须替填写,因为我是jmeter5.2.1版本,不填写会报错;

2、这些基本参数填写后仍然时是报错“文件上传上传失败”,找了后端开发帮忙定位说是content-type不对,查看request header发现果然是格式不正确,错误的请求中 content-type如下

3、然后恍然大悟发现自己在thread下已经设置了通用的header manager如下,导致content-type格式不正确

4、最后在网上找了这个方法,在http sample的前后分别添加beanshell前置处理和beanshell后置处理,最后终于解决了问题。

原文链接:https://blog.csdn.net/xingyunpi/java/article/details/77930476    

在上传文件的HTTP request sampler下,加一个BeanShell PreProcessor, 将全局的content-type remove掉,就可以了. 脚本:

sampler.getHeaderManager().removeHeaderNamed("Content-Type");

如果接下来的case还想再加回content-type=application/json, 如下:

import org.apache.jmeter.protocol.http.control.Header;

sampler.getHeaderManager().add(new Header("Content-Type","application/json"));

以上是关于上传失败缺少请求参数file的主要内容,如果未能解决你的问题,请参考以下文章

缺少的请求参数包含在主体中

如果请求缺少必需的参数,我应该使用啥 HTTP 状态响应代码?

Java后端 带File文件及其它参数的Post请求

requests请求接口---上传文件

Jmeter文件上传

Django - get_queryset() 缺少 1 个必需的位置参数:“请求”