jmeter文件上传压测file upload-数据为空-Connection terminated parsing multipart data

本文主要探讨了在使用JMeter进行文件上传压力测试时遇到的问题,包括文件上传失败、数据为空的错误以及解决策略。通过分析HTTP请求,强调了参数名称、MIME类型、Header设置的重要性。特别是,勾选'Use multipart/form-data for POST'并删除Content-Type头信息可以解决文件上传失败的问题。同时,当遇到导入数据为空的错误时,可以选择'HttpClient4'或'Java'作为Implementation。文章提供了详细的步骤和参考链接,帮助读者理解并解决JMeter文件上传测试中的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考https://blog.youkuaiyun.com/u010390063/article/details/78329373

https://www.cnblogs.com/zichuan/p/10120316.html

https://blog.youkuaiyun.com/qq_41117947/article/details/79964346

https://www.jianshu.com/p/338b0e89b0cd

先抓个包,把请求、参数、header、cookie都对应起来,着重注意file upload和header里的content-type(不在header头信息里添加,勾选use multipart/form-data for post即可,但也要根据抓包的结果对比)

1、参数名称要与抓包的name保持一致

2、MIME类型要与以上抓包的类型一致

3、是本地的路径

4、跟随重定向:勾选后,与自动重定向不同的是,会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,并对响应的内容做关联

第一个是自动重定向:勾选后,当发送HTTP请求后得到的响应是302/301时,自动重定向到新的页面

5、Use KeepAlive:勾选后,和目标服务器之间使用Keep-Alive方式进行HTTP通信

6、Browser-compatible headers:勾选后,当使用multipart/form-data时,会只发送Content-Disposition标头(当发送HTTP POST请求时,使用Use multipart/form-data方法发送,可用它做文件上传,这个属性是与方法POST绑定的。这里需要勾选此项。)

7、着重看一下勾选Browser-compatible headers(浏览器兼容模式)的效果:

未勾选时显示 Content-Type 和Content-Transfer-Encoding

勾选时不显示Content-Type 和Content-Transfer-Encoding

其中第二部分显示的Content-Type:application/zip显示的不是头信息里的,显示的是Body体里的MIME-type 

发现在头信息里添加了Content-Type:multipart/form-data; 就会导致上传文件失败,勾选Browser-compatible headers不知道是冲突还是怎么了,感觉忽略不起作用。最后的解决方法就是在头信息里删除该项,勾选Use multipart/form-data for POST即可。

重点:

按以上方式维护HTTP请求,执行脚本,如果报错且提示“导入的数据为空”那么需要把Implementation选择为“HttpClient4”或者“Java”。选择哪一个需要用Badboy录制一下后导出成.jmx文件,再用jmeter打开查看。

 

Implementation中:

Java:使用的http是使用的JAVA JVM提供的方法,有相关的限制:1)连接如何重用在请求中没有控制;2)当jmeter释放了一个请求后,在同样的进程中可能不会再使用了;3)只使用于单进程模式;4)HTTPS代理请求有两个bug没存在;5)不支持虚拟主机;6)不支持相关的方法;7)不支持存储证书的请求。

HttpClient4:使用Apache HttpClient 4.1部件。

空白:使用HTTP默认请求中的配置或jmeter.properties中jmeter.httpsample中的配置

 

 

 

 

 

实例:


 

### 使用 JMeter 对 `form-data` 类型接口进行试 对于 `form-data` 类型的接口,JMeter 需要特别配置来模拟这种请求。具体来说,当设置 HTTP 请求采样器时,应确保选择了合适的选项并正确设置了参数。 #### 设置HTTP请求采样器 在创建线程组之后,添加一个HTTP请求默认值或直接添加HTTP请求采样器。在此处,重要的是要在“发送文件随同请求一起上传”部分指定文件路径以及 MIME 类型[^5]。然而,对于普通的键值对形式的数据,则不需要此操作;只需关注如何处理这些数据作为表单项即可。 为了使 JMeter 正确地构建 `multipart/form-data` 请求,应该: - **选择正确的实现方式**:将 HTTP 请求中的 Implementation 设定为 Java 或者 HttpClient4/HttpClient5(取决于版本),因为它们能够更好地支持多部件消息格式。 - **启用 multipart/form-data 选项**:勾选 "Use multipart/form-data" 复选框以指示这是一个包含多个部分的消息体。 - **定义参数**:切换到 Parameters 标签页而不是 Body Data 来输入 POST 参数,并且每一对 key-value 应该单独一行列出。 另外值得注意的一点是在实际应用中,服务器端可能会期待特定的边界字符串用于分隔不同的字段。虽然通常情况下客户端会自动生成这个边界串,但在某些特殊场景下可能需要手动调整它以匹配目标服务的要求[^4]。 下面是一个简单的例子展示如何配置上述提到的内容: ```properties POST http://example.com/api/upload Headers: Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW Payload (using Parameters tab with Use multipart/form-data checked): file=@path/to/file.txt;text/plain description=A brief description of the file. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值