【问题标题】:c# MultipartFormDataContent Add methods (how to properly add a file)c# MultipartFormDataContent 添加方法(如何正确添加文件)
【发布时间】:2017-02-16 15:27:05
【问题描述】:

我正在使用 MultipartFormDataContent 将文件上传到休息 API。这很好用,但我的问题集中在使用 Add(...) 方法包含文件内容的正确方法上。目前我正在这样做:

string fileName = "foobar.txt";
MultipartFormDataContent formContent = new MultipartFormDataContent();
ByteArrayContent byteArray = ...;
formContent.Add(byteArray, "file", fileName);
...

再次,这有效 - 我试图了解 Add(...) 方法的参数。在 MSDN 文档中:https://msdn.microsoft.com/en-us/library/system.net.http.multipartformdatacontent(v=vs.118).aspx

它有两种添加方法:

  1. 添加(HttpContent,字符串)
  2. 添加(HttpContent,字符串,字符串)

但是两者都没有列出描述,并且在深入研究方法本身时,参数仅被描述(同样没有描述)为:

  1. HttpContent 内容,字符串名称
  2. HttpContent 内容、字符串名称、字符串文件名

所以,我在这方面的具体问题是:

  • 什么是“name”参数? (我设置为“文件”的那个)?
  • 这需要是文字字符串“文件”还是可以是其他内容?
  • 如何使用?

【问题讨论】:

  • 我根本不使用 Add。看到这个答案stackoverflow.com/questions/42212406/…
  • @Fran 谢谢。看来您正在使用类似的模式,其中(在与您的surveyId相同的数组中)您添加:(1)byteArrayContent,(2)文字字符串“file”,(3)和文件名.我的问题仍然是关于这个中间参数:如果正在上传文件,它必须是文字字符串“file”吗?这个参数还有什么用途?
  • 写入内容配置头。看起来您可以将其关闭以进行文件上传。 name 看起来与输入名称相对应。 developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
  • @Fran - 看起来不错,谢谢你解决这个问题!

标签: c# file-upload httpclient add multipartform-data


【解决方案1】:

它被写入内容处置标头。看起来您可以将其关闭以进行文件上传。 name 看起来与输入名称相对应。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Disposition

【讨论】:

    【解决方案2】:

    按照三个参数的方法,下面是对每个参数的简要说明。

    public void Add(HttpContent content, string name, string fileName);
    

    content - 需要发送的内容(例如:数组、文件)。

    name - 该内容的名称。如果 Web API 必须搜索特定的名称,这是必不可少的。

    文件名 - 将添加到邮件内容处置标头的名称。 Web API 将使用它来保存文件。

    【讨论】:

      猜你喜欢
      • 2020-10-10
      • 1970-01-01
      • 2011-08-11
      • 2022-12-23
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2017-10-15
      • 1970-01-01
      相关资源
      最近更新 更多