3

この問題に数時間悩まされていますが、解決策が見つかりません。ServiceStack を使用して、1 回の POST 要求で複数のファイルをアップロードした人はいますか?

私は PostFile を使用しようとしていました:

  FileInfo fi = new FileInfo("ExampleData\\XmlAPI.xml");
  var client = new XmlServiceClient("http://localhost:1337");
  client.PostFile<DefaultResponse>("/test", fi, "application/xml");

ただし、ここでは、リクエストに追加できるファイルは 1 つだけです。私の 2 番目のショットは LocalHttpWebRequestFilter を使用することでしたが、内部には 1 つのファイルのみを投稿できる拡張メソッドしかありません。

4

1 に答える 1

2

複数のファイルアップロードAPIがv4.0.54のすべての.NETサービスクライアントに追加され、単一のHTTPリクエスト内で複数のストリームを簡単にアップロードできるようになりました。複数のファイルアップロードデータストリームに加えて、QueryStringとPOSTされたFormDataの任意の組み合わせでRequestDTOにデータを入力することをサポートします。

using (var stream1 = uploadFile1.OpenRead())
using (var stream2 = uploadFile2.OpenRead())
{
    var client = new JsonServiceClient(baseUrl);
    var response = client.PostFilesWithRequest<MultipleFileUploadResponse>(
        "/multi-fileuploads?CustomerId=123",
        new MultipleFileUpload { CustomerName = "Foo,Bar" },
        new[] {
            new UploadFile("upload1.png", stream1),
            new UploadFile("upload2.png", stream2),
        });
}

または、型指定された要求DTOのみを使用します。また、新しいAPIJsonHttpClientのそれぞれに相当する非同期が含まれてい ます。PostFilesWithRequest

using (var stream1 = uploadFile1.OpenRead())
using (var stream2 = uploadFile2.OpenRead())
{
    var client = new JsonHttpClient(baseUrl);
    var response = await client.PostFilesWithRequestAsync<MultipleFileUploadResponse>(
        new MultipleFileUpload { CustomerId = 123, CustomerName = "Foo,Bar" },
        new[] {
            new UploadFile("upload1.png", stream1),
            new UploadFile("upload2.png", stream2),
        });
}
于 2013-02-19T15:59:54.343 に答える