C# ServiceStack客户端添加附件
我正在使用ServiceStack.ServiceClient.Web.XmlServiceClient连接到Web服务。有没有办法向请求添加附件 更多信息: 我试图避免使用Microsoft.Web.Services2,因为我使用的是Mono。我正试图上传一个XML数据文件和一个XML请求。就像这个问题一样: 上传文件最好(也是最快)的方法是不要将其编码为普通请求变量,而只需将其上传到web服务,作为一个普通的HTTP上传,使用ContentType多部分/表单数据,即HTML表单当前如何将文件发送到url 内置支持以这种方式处理上传的文件,其中提供了一个完整的示例 要使用ServiceClient上载文件,可以使用.PostFile()方法: 与返回文件响应(作为附件或直接)类似,您只需: 多文件上传 您还可以使用所有.NET服务客户端中可用的C# ServiceStack客户端添加附件,c#,soap,
servicestack,C#,Soap,
servicestack,我正在使用ServiceStack.ServiceClient.Web.XmlServiceClient连接到Web服务。有没有办法向请求添加附件 更多信息: 我试图避免使用Microsoft.Web.Services2,因为我使用的是Mono。我正试图上传一个XML数据文件和一个XML请求。就像这个问题一样: 上传文件最好(也是最快)的方法是不要将其编码为普通请求变量,而只需将其上传到web服务,作为一个普通的HTTP上传,使用ContentType多部分/表单数据,即HTML表单当前如何将文
PostFilesWithRequest
API在单个HTTP请求中上载多个流。它支持使用查询字符串的任意组合填充请求DTO
和POST'edFormData以及多个文件上载数据流,例如:
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),
});
}
非常感谢。我仍然有点不确定如何处理XML请求和我拥有的XML文件。我已经在我的问题中添加了更多的信息。一旦你以文件/流的形式获得了它,你就可以自由地使用它来做你想做的事情了?另外,最好先问一个更集中的问题,然后再将现有的问题扩展到一个不相关的路径。@mythz:With,
.PostFile()
还可以吗?是的PostFile
仍在更改。警告:请注意,ServiceStack为客户端上载文件提供的这些内置方法,实际上,首先在内存中上载整个文件。如果您有小文件,这很好,但通常应该避免。(来源:第1053行:var fileBytes=file.Stream.ReadFully();
)
foreach (var uploadedFile in base.RequestContext.Files)
{
var newFilePath = Path.Combine(targetDir.FullName, uploadedFile.FileName);
uploadedFile.SaveTo(newFilePath);
}
return new HttpResult(FileInfo, asAttachment:true);
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),
});
}
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),
});
}