如何使用IRequiresRequestStream获取多个原始Http请求输入流?

时间:2015-08-14 12:10:50

标签: stream servicestack

我正在尝试使用服务堆栈上传多个文件。下面的代码适用于一个文件上传。我想上传多个文件。请告诉我需要进行哪些更改,以便下面的代码也能用于上传多个文件。

 public class Hello : IRequiresRequestStream
    {
        Stream RequestStream { get; set; }
    }

在客户端,我正在使用' multipart / form-data'用于文件上传。

1 个答案:

答案 0 :(得分:2)

请参阅Uploading Files上的文档,IRequiresRequestStream仅用于作为字节流访问请求正文,以处理使用multipart/form-data上传的多个文件使用base.Request.Files属性相反,例如:

上传文件

您可以使用Request.Files独立于请求DTO访问上传的文件。 e.g:

public object Post(MyFileUpload request)
{
    if (this.Request.Files.Length > 0)
    {
        var uploadedFile = base.Request.Files[0];
        uploadedFile.SaveTo(MyUploadsDirPath.CombineWith(file.FileName));
    }
    return HttpResult.Redirect("/");
}

ServiceStack的imgur.servicestack.net示例显示了如何访问byte stream of multiple uploaded files,例如:

public object Post(Upload request)
{
    foreach (var uploadedFile in base.Request.Files
       .Where(uploadedFile => uploadedFile.ContentLength > 0))
    {
        using (var ms = new MemoryStream())
        {
            uploadedFile.WriteTo(ms);
            WriteImage(ms);
        }
    }
    return HttpResult.Redirect("/");
}