【问题标题】:Post JPEG file using fiddler with other body data使用 fiddler 和其他正文数据发布 JPEG 文件
【发布时间】:2015-06-15 09:03:05
【问题描述】:

我正在尝试通过 Fiddler 将 jpeg 文件发布到本地开发的 Web 服务。这很简单,但我还需要在文件旁边包含一些数据,并且不能完全确定 fiddler 想要的语法。如果我单击上传文件按钮并选择要上传的文件,它会将我的 POST 正文替换为:

---------------------------acebdf13572468
Content-Disposition: form-data; name="fieldNameHere"; filename="PantheraLeo.jpg"
Content-Type: image/jpeg

<@INCLUDE *C:\temp\PantheraLeo.jpg*@>
---------------------------acebdf13572468—

现在我想添加一些额外的数据:

user=1&album=2&photo=[OUTPUT FROM FILE UPLOAD]

我尝试将它放在正文的开头,但是当我的 Node 应用收到请求时,我得到了一个用户参数、一个相册参数但没有照片。

关于如何格式化此请求以获取参数和上传的照片作为照片参数的任何想法?

【问题讨论】:

标签: post fiddler


【解决方案1】:

我也一直在寻找自己做类似的事情,偶然发现了你的问题。在对 Fiddler 进行了一些处理之后,我才设法实现了我所需要的。试试这个:

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

MyModelInfo

---------------------------acebdf13572468
Content-Disposition: form-data; model="test123"; filename="123.gif"
Content-Type: image/gif

<@INCLUDE *Z:\Downloads\123.gif*@>
---------------------------acebdf13572468--

您似乎将请求正文中发送的表单数据链接到 POST 信息中的“acebdf13572468”边界。为 Content-Disposition 提供一个键名(在我的情况下为“模型”),然后下面的行表示您对该键的实际值。 (在我的例子中是“MyModelInfo”。

使用上述请求正文,我能够将文件以及一些随附的 POST 数据发布到我的 API。

【讨论】:

  • 谢谢。你的解决方案奏效了。我还注意到我忘记将文件上传从 name="fieldNameHere" 重命名为 name="photo"!使用上面建议的语法和修复,它现在可以工作了:)
  • 太好了,很高兴有帮助!
  • 我还尝试上传 jpeg 图像,在我的情况下 name ="image" 有效。==> Content-Disposition: form-data;名称=“图像”; filename="dresses-12.jpg" 内容类型:image/jpeg
【解决方案2】:

接受的答案效果很好。但是在 MyModelInfo 进入字符串后,请注意额外的行。此外,当复制和粘贴进出提琴手时,某些行已损坏,破坏了文件。

注意,我在提琴手主体和接收 API 函数中将文件参数命名为“file”。

这对我有用:

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

Some text with a line before but not after
---------------------------acebdf13572468
Content-Disposition: form-data; name="file"; filename="filename.jpg"
Content-Type: image/jpeg

<@INCLUDE *C:\local\filename.jpg*@>
---------------------------acebdf13572468--

.net core 2 可以像这样接收数据:

    [HttpPost]
    [Route("AddImage")]
    public async System.Threading.Tasks.Task<IActionResult> AddImageAsync(IFormFile file)
    {
        //f is the same as file
        //var f = Request.Form.Files.Count > 0 ? Request.Form.Files[0] : null;

        //useful to check the keys
        //var additionalProperties = Request.Form.Keys;

        if (file != null)
        {
            try
            {
                if (Request.Form.TryGetValue("PARAM1", out StringValues p1))
                {
                     var txt = p1.ToString():

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2017-02-21
    • 1970-01-01
    相关资源
    最近更新 更多