Post 使用JMeter将文件上载到RESTAPI

Post 使用JMeter将文件上载到RESTAPI,post,file-upload,jmeter,Post,File Upload,Jmeter,注意-当我使用文件上传选项卡时,我已经检查了哪个上传文档作为正文数据 下面是我的请求的样子- 执行时,我收到以下请求- 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 Auth

注意-当我使用文件上传选项卡时,我已经检查了哪个上传文档作为正文数据

下面是我的请求的样子-

执行时,我收到以下请求-

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)
因为我能够使用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'
curl-X POST--header'Content Type:multipart/form data'--header'Accept:application/json'--header'Authorization:Bearer'-F upload_file=@“test.pdf”https://xxx'

JMeter文件上传中遗漏了什么?

如果您可以通过curl成功上传文件,为什么不通过以下方式记录上传:


如果您仍然需要构建请求,请手动考虑两个重要位:

  • 您需要检查
    为POST使用多部分/表单数据

  • 最重要的是,您需要根据以下内容提供“参数名称”:

    对于POST和PUT方法,如果没有要发送的文件,并且省略了参数的名称,则通过连接参数的所有值来创建主体

    在您的案例中,“参数名称”应该是
    upload\u file

  • 因此,最终配置应如下所示:


    有关详细说明的上述步骤,请参阅指南

    感谢您对HTTP的JAVA实现!文件上传对我来说又起作用了,自从2.13以后就没有起作用了

    这是我在其他地方的帖子: 我也有同样的问题…我认为jmeter做错了什么,因为这个东西在2.13中对我有效…从第3版开始就不起作用了。嗯..看到一篇帖子说,使用HTTP的JAVA实现是可行的。你猜怎么着?这对我也很有用!!!我一直在努力剖析这篇文章的每一部分。我一直都做得很好,只需要JAVA实现HTTP和瞧


    希望有帮助

    在Jmeter的Advanced选项卡中再次投票支持使用Java实现。在postman和jmeter之间,我的头和正文完全相同,但在我更改为Java实现之前,它不会上载我的文件(得到响应代码415)。

    我的后端服务器是用Java实现的,在文件上载请求中,我必须选择作为Java的实现

    这里是文件上传部分

    我也尝试过MIME类型
    多部分/表单数据
    ,但没有用TTPS测试记录器记录浏览器请求,而不是从curl转换为JMeter格式,不是吗?我选中了multipart/formdata复选框,将参数_name添加为upload_文件,但仍然得到400错误。这就是请求的外观-HTTP(S)测试记录器用于记录任何HTTP或HTTPS请求,无论其来源如何。仅供参考:所有浏览器所做的都是发送HTTP请求和呈现响应。我使用的是失败的http4实现,错误为400,将其切换到java客户端工作正常。谢谢你对录音机的指点。我浪费了很多时间,你给出了正确的答案,谢谢你为我的牙床做了很多工作。非常有帮助。
    curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Bearer <>' -F upload_file=@"test.pdf"  'https://xxx'
    
    curl -x http://localhost:8888 -X POST --header 'Content-Type....."