2013-06-04 60 views
0

我創建了C#客戶端,其中包含HttpClient庫。客戶端上傳中的多部分和表單之間的差異

我使用BASE64編碼數據來上傳文件(通過POST)。 有時,我經歷了錯誤(可能是因爲內容長度限制),即使數據不是太大(大約500kB)。

我將其更改爲MultipartFormData POST,正如我們所預料的那樣,它運行正常且超過1MB。

Web服務器是否以不同的方式處理會話,以簡化Form POST和Multipart POST?

請注意,我使用的Web服務是Azure WebSites。

回答

2

這不是Azure或IIS中的任何類型限制。這就是HTTP協議的設計!詳細瞭解Form元素here的不同類型的內容類型。

從規格:

應用程序/ x-WWW窗體-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%')....

現在對於多部分:

的multipart/form-data的

內容類型「application/x-www-form-urlencoded」效率不高 用於發送大量二進制數據或包含 非ASCII字符的文本。內容類型「multipart/form-data」應爲 ,用於提交包含文件,非ASCII數據和 二進制數據的表單。

內容「multipart/form-data」遵循[RFC2045]中概述的所有多部分 MIME數據流的規則。 [IANA]註冊處提供了 「multipart/form-data」的定義。

因此,要上傳文件,您應該始終使用multipart/form-data。不僅與Azure,不僅與IIS,但與任何託管服務提供商和任何 Web服務器,實現HTTP協議標準。

+0

謝謝你深深的教我。 – Youngjae

相關問題