6

私は2つのことを受け入れるサービスを作成しました:

1)「タイプ」と呼ばれるボディパラメータ。

2)アップロードするcsvファイル。

私はこの2つのことをサーバー側で次のように読んでいます:

 //Read body params
 string type = HttpContext.Current.Request.Form["type"];

 //read uploaded csv file
 Stream csvStream = HttpContext.Current.Request.Files[0].InputStream;

これをテストするにはどうすればよいですか、これをテストするためにFiddlerを使用していますが、一度に送信できるのは1つだけです(タイプまたはファイルのいずれか)。両方が異なるコンテンツタイプであるため、コンテンツタイプmultipart/form-dataを使用するにはどうすればよいですかとapplication/x-www-form-urlencodedを同時に。

私もこのコードを使用します

    public static void PostDataCSV()
    {
        //open the sample csv file
        byte[] fileToSend = File.ReadAllBytes(@"C:\SampleData.csv"); 

        string url = "http://localhost/upload.xml";
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
        request.Method = "POST";
        request.ContentType = "multipart/form-data";
        request.ContentLength = fileToSend.Length;


        using (Stream requestStream = request.GetRequestStream())
        {
            // Send the file as body request. 
            requestStream.Write(fileToSend, 0, fileToSend.Length);
            requestStream.Close();
        }

        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        //read the response
        string result;
        using (StreamReader reader = new StreamReader(response.GetResponseStream()))
        {
            result = reader.ReadToEnd();
        }

        Console.WriteLine(result);
    }

これもサーバーにファイルを送信しません。

4

2 に答える 2

3

上記のコードでは、適切なマルチパートボディが作成されません。

ファイルをストリームに単純に書き込むことはできません。各パーツには、パーツごとのヘッダーなどを含むプリアンブル境界マーカーが必要です。

HTTPWebrequestを使用したファイルのアップロード(multipart / form-data)を参照してください。

于 2013-02-26T18:33:27.850 に答える
0

複数のcontentTypesの問題に関するいくつかの情報はここにあります: http ://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.7.2

multipart / form-dataは、httpプロトコルを介して複数のデータ型を送信する唯一の方法です。

于 2013-02-26T10:49:57.863 に答える