3

我在这个问题上苦苦挣扎了几个小时,但找不到任何解决方案。有人使用 ServiceStack 通过一个 POST 请求上传多个文件吗?

我试图使用 PostFile:

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

但是在这里我只能向请求中添加一个文件。我的第二个镜头是使用 LocalHttpWebRequestFilter 但里面只有一个扩展方法,它也允许只发布一个文件。

4

1 回答 1

2

多个文件上传 API 已添加到 v4.0.54中的所有 .NET 服务客户端,允许您在单个 HTTP 请求中轻松上传多个流。除了多个文件上传数据流之外,它还支持使用 QueryString 和 POST'ed FormData 的任意组合填充 Request DTO:

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),
        });
}

或者仅使用 Typed Request DTO。JsonHttpClient还包括每个新 PostFilesWithRequestAPI的异步等效项:

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 回答