3

.csv ファイルをアップロードできるようにするサーバーへの API 呼び出しを作成しようとしています。

クライアント側のコード

string url = "http://testserver/testapi";
string filePath = @"C:\test.csv";
using (WebClient wc = new WebClient())
{
    wc.Headers.Add("Content-Type", "text/plain");
    byte[] responseArray = wc.UploadFile(url, filePath);
}

サーバー側コード

string savePath = testSavePath;
foreach (string f in Request.Files.AllKeys)
{
    HttpPostedFileBase file = Request.Files[f];
    file.SaveAs(savePath);
}

この行で例外が発生していますbyte[] responseArray = wc.UploadFile(url, filePath);

奇妙なことは、私が見たときRequest

ContentType="multipart/form-data; boundary=---------------------8d006b7c2a5452c".

UploadFile のドキュメントを見ると、次の場合に WebException がスローされることがわかりますThe Content-type header begins with multipart.

私の質問は、なぜ contentType が multipart に設定されているのですか? どうすればそれを防ぐことができますか?

4

1 に答える 1

4

クライアントコードは問題ないようです。サーバー側から例外が発生している可能性があります。ただし、例外を共有していないため、判断するのは困難です。してください、より良い答えが得られます。

マルチパート コンテンツ タイプの場合: HTTP 要求全体ではなく、ファイルのコンテンツ タイプのヘッダーのWebClient.UploadFileuses 値(設定されていない場合はデフォルト)。実際の HTTP リクエストは常に (あなたが見つけたように) (ファイルをアップロードするための HTTP 仕様に従って) であり、それを変更することはできません (すべきではありません)。ドキュメント内の注記は、実際のファイルのコンテンツ タイプを参照しています。これは、それ自体がマルチパートである (別のマルチパート HTTP エンベロープにラップされる) ファイルのアップロードを要求できないことを意味します。Content-Typeapplication/octet-streammultipart/form-dataWebClient

于 2013-04-14T06:02:13.813 に答える