2016-11-24 6 views
0

WebClientを使用してWebアプリケーションにファイルをアップロードする必要があるプロジェクトで作業しています。WebClientを使用してSLUGヘッダーのエンコーディングを設定する方法

私は次のコードを試しましたが、サーバーはslugヘッダーに定義されている特殊文字を認識せず、印刷可能でない他の文字で置き換えます。

WebClient.Headers.Clear(); 
WebClient.Headers.Add("Content-Type",GetMimeType(Path.GetExtension("aáñÑ.pdf"))); 
WebClient.Headers.Add("Accept", "*/*"); 
WebClient.Headers.Add("Referer", myRefererURL); 
WebClient.Headers.Add("x-csrf-token", "securityTokenFromModel"); 
WebClient.Headers.Add("slug", "aáñÑ.pdf"); 

はまた、RFC2047(http://www.ietf.org/rfc/rfc2047.txt)を読んだ後、私は次のコードで最後の行を置き換えますが、サーバーは要求を認識し、エラーを返していません。

WebClient.Headers.Add("slug", "(=?ISO-8859-1?q?" + "aáñÑ.pdf" + "?=)"); 

エンコーディング文字セットを設定して、スラッグヘッダーに特殊文字(アクセント、スペイン語文字)を使用できるもう1つの方法はありますか?

編集:

WebClient.Headers.Add("slug", "The Beach at S%C3%A8te"); 

しかし、Webアプリケーションは正確にファイル名を設定しています:

@Julian答えを読んだ後、私はこのように見えるようにスラグのヘッダーを変更しようとした「ビーチのS%でC3%A8te」となる。別の試験で

が、これはフィドラーは、ファイル名 "DocumentaciónÑñ.docx" を使用して要求を示した方法です:Internet Explorerの11で作られた

要求:.NETによって作らOK

Request made by Internet Explorer 11: OK

リクエストWebクライアントとGoogle Chromeの:ERROR答えはSPである

enter image description here

+0

をあなたはSystem.Web.HttpUtility 'によってスラグ値を脱出しようとしたことがありWebClient.Headers.Add( "slug"、 "(=?ISO-8859-1?q?" + System.Web.HttpUtility.HtmlEncode( "aññ.pdf")+ "?=)"); '。this。 –

+0

ありがとう@Aliしかし、それは動作しませんでした。WebClient.Headers.Add(" slug "、"(=?ISO-8859-1?q? "+ System.Web。 WebClient.Headers.Add( "slug"、 "(System.Web.HttpUtility.HtmlEncode("aññ.pdf "));サーバーからエラーを返します。 "));ファイル名にエンコードされた文字を設定します。 –

+0

私はあなたが必要と思います送信する前にファイル名を 'ISO-8859-1'にエンコードします。これをチェックする:http://stackoverflow.com/questions/629617/how-to-convert-string-to-iso-8859-1 –

答えて

1

フィールド値は、含める文字シーケンスのUTF-8エンコーディングのパーセントエンコード値です(エンコードの定義については[RFC3986]のセクション2.1を、エンコーディングの定義については[RFC3629]を参照してください)。 UTF-8エンコーディングの定義)。

実装上の注意:文字シーケンスからフィールド値を生成するには、最初にUTF-8エンコーディングを使用してエンコードし、%20-24および%26-7Eの範囲外のすべてのオクテットを%エンコードでエンコードします"%"のASCIIエンコーディング、したがってエスケープする必要があります)。最初パーセントエンコーディングを逆にし、UTF-8デコード処理によって結果のオクテットシーケンスを実行して、フィールドの値を消費する。」

https://greenbytes.de/tech/webdav/rfc5023.html#rfc.section.9.7.1

+0

あなたの答えをありがとう私が作った別のテストの結果を表示するために質問を編集しました –

+0

"ファイル名を設定する"と言ったら、何を参照していますか?作成されたリソースのURI? –

+0

私が言ったのは、サーバー上のアップロードされたファイルが、そのファイル名(パーセント記号と数字)で「The Beach at S%C3%A8te」を取得したことです。 –

関連する問題