Fiddler如何将二进制文件数据添加到POST请求中

18

我试图直接将二进制文件数据添加到POST请求的正文中,以便模拟文件上传。然而,我尝试设置“请求前”断点并使用“插入文件”,但似乎无法使其工作。我还尝试修改CustomRules.js以注入该文件,但无法弄清如何通过JScript加载二进制数据。这里是否有简单的解决方案?


你正在进行什么类型的上传(例如上传到哪个服务器)?不同的服务器接受不同的格式。最好的方法是修改现有的上传,但也可以使用 Fiddler 生成格式正确的上传。 - EricLaw
4个回答

43

我相信这是自那个问题得到回答以来的一个新功能,但还是想加上它:

现在,在Composer中,在URL文本框下的右侧有一个蓝色的 “[上传文件]” 链接。这将创建一个完整的multipart/form-data请求。如果您使用此选项,您会注意到在请求正文中,现在有类似于以下内容:

<@INCLUDE C:\Some\Path\my-image.jpg@>

在我的情况下,我只想直接POST二进制文件而没有多余的“multipart”。因此,我只需将 <@INCLUDE…@> 魔术代码放入请求正文中,这样就会将二进制文件发送为正文。


这个现在消失了吗?好像不在那里了。 - BanksySan
3
没有,它只是两个输入框之间的微小蓝色文本(类似于链接文本)。 - BanksySan

15
为了发送 multipart/form-data,可以使用以下方法。

在上方面板(Http header)中设置Content-Type。其他值将自动解决。

Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468

请在下面的面板中输入响应正文,如下所示。

---------------------------acebdf13572468
Content-Disposition: form-data; name="description" 

the_text_is_here
---------------------------acebdf13572468
Content-Disposition: form-data; name="file"; filename="123.jpg"
Content-Type: image/jpg

<@INCLUDE *C:\Users\Me\Pictures\95111c18-e969-440c-81bf-2579f29b3564.jpg*@>
---------------------------acebdf13572468--

导入规则如下:

  1. Content-Type中应该比正文中的分界词多两个 - 符号。
  2. 正文的最后应该以两个 - 符号结束。

5
在 Fiddler 脚本中(在 Fiddler 中:规则...自定义规则),找到 OnBeforeRequest 函数,并添加类似以下的一行代码:
if (oSession.uriContains("yourdomain"))
{
    oSession.LoadRequestBodyFromFile("c:\\temp\\binarycontent.dat");    
}

2
自2.0版本开始,请求体(Request Body)中有一个“上传文件...”链接,允许您发布/上传二进制数据。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接