注意 - 我在使用“文件上传”标签时检查了BlazeMeter Tutorial上传文档为正文数据的内容。
以下是我的请求的显示方式 -
在执行时,我得到以下请求 -
POST https://xxx
POST data:
<actual file content, not shown here>
[no cookies]
Request Headers:
Connection: keep-alive
Content-Type: multipart/form-data
Accept-Language: en-US
Authorization: bearer <>
Accept: application/json
Content-Length: 78920
Host: test-host
User-Agent: Apache-HttpClient/4.5.2 (Java/1.8.0_102)
请求失败,出现400错误 -
Response code: 400
Response message: Bad Request
由于我能够使用curl进行文件上传,我认为我错过了JMeter的一些配置。卷曲看起来像 -
curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Bearer <>' -F upload_file=@"test.pdf" 'https://xxx'
在JMeter文件上传中我错过了什么?
答案 0 :(得分:1)
如果您可以通过curl成功上传文件,为什么不通过JMeter HTTP(S) Test Script Recorder来记录上传内容,如:
curl -x http://localhost:8888 -X POST --header 'Content-Type....."
如果仍需要手动构建请求,请考虑两个重要部分:
您需要检查Use multipart/form-data for POST
。
最重要的是,您需要提供&#34;参数名称&#34;,根据HTTP Request Sampler Manual:
对于POST和PUT方法,如果没有要发送的文件,并且省略了参数的名称,则通过连接参数的所有值来创建正文。
在您的案例中查看curl command manual&#34;参数名称&#34;应为upload_file
所以最终配置应如下所示:
有关详细说明的上述步骤,请参阅Performance Testing: Upload and Download Scenarios with Apache JMeter指南。
答案 1 :(得分:1)
答案 2 :(得分:0)
感谢您对HTTP的JAVA实现!文件上传对我来说再次起作用,自2.13以来它还没有工作
这是我的帖子,其中: 我有同样的问题...认为jmeter做错了,因为这些东西在2.13中为我工作...自从版本3开始以来没有工作。很好......在某个地方发了一个帖子说,使用HTTP的JAVA实现工作。你猜怎么着?它确实对我有用!!!我一直在努力试图剖析POST的每个部分。我一直这样做,只需要JAVA实现HTTP和瞧!
希望有所帮助!答案 3 :(得分:0)
在Jmeter的“高级”选项卡中使用Java实现的另一种投票。我的标头和正文在邮递员和jmeter之间完全相同,但是直到我更改为Java实现,它才上传我的文件(响应代码为415)。