0

HttpClient我用库创建了 C# 客户端。

我使用 BASE64 编码数据来上传文件(通过 POST)。有时,即使数据不是太大(大约 500kB),我也会遇到错误(可能是因为内容长度限制)。

我将其更改为MultipartFormDataPOST,正如我们所料,它运行良好,超过 1MB。

Web 服务器在简单的 Form POST 和 Multipart POST 之间是否以不同的方式处理会话?

请注意,我使用的 Web 服务是 Azure 网站。

4

1 回答 1

2

这在 Azure 或 IIS 中没有任何限制。这就是 HTTP 协议的设计方式!在此处阅读有关Form元素的不同类型内容类型的更多信息。

从规范:

应用程序/x-www-form-urlencoded

这是默认的内容类型。使用此内容类型提交的表单必须编码如下:

控件名称和值被转义。空格字符替换为 +', and then reserved characters are escaped as described in [RFC1738], section 2.2: Non-alphanumeric characters are replaced by %HH'、一个百分号和两个表示字符 ASCII 代码的十六进制数字。换行符表示为“CR LF”对(即,`%0D%0A')....

现在对于多部分:

多部分/表单数据

内容类型“application/x-www-form-urlencoded”对于发送大量二进制数据或包含非 ASCII 字符的文本效率低下。内容类型“multipart/form-data”应用于提交包含文件、非 ASCII 数据和二进制数据的表单。

内容“multipart/form-data”遵循 [RFC2045] 中概述的所有多部分 MIME 数据流的规则。“multipart/form-data”的定义可在 [IANA] 注册表中找到。

因此,要上传文件,您应该始终使用multipart/form-data. 不仅适用于 Azure,也适用于 IIS,适用于任何托管服务提供商和任何实现 HTTP 协议标准的 Web 服务器。

于 2013-06-04T06:36:47.917 回答