如何使用 IRequiresRequestStream 获取多个原始 Http 请求输入流?
How do I get Multiple raw Http Request Input Stream using IRequiresRequestStream?
我正在尝试使用服务堆栈上传多个文件。下面的代码对于一个文件上传工作正常。我想上传多个文件。请让我知道需要进行哪些更改,以便以下代码也适用于多个文件上传。
public class Hello : IRequiresRequestStream
{
Stream RequestStream { get; set; }
}
在客户端,我使用 'multipart/form-data' 进行文件上传。
请参阅 Uploading Files 上的文档,IRequiresRequestStream
仅用于将请求主体作为字节流访问,要处理使用 multipart/form-data
上传的多个文件,请使用 base.Request.Files
属性 而不是,例如:
上传文件
您可以使用 Request.Files
独立于请求 DTO 访问上传的文件。例如:
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 example shows how to access the 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("/");
}
我正在尝试使用服务堆栈上传多个文件。下面的代码对于一个文件上传工作正常。我想上传多个文件。请让我知道需要进行哪些更改,以便以下代码也适用于多个文件上传。
public class Hello : IRequiresRequestStream
{
Stream RequestStream { get; set; }
}
在客户端,我使用 'multipart/form-data' 进行文件上传。
请参阅 Uploading Files 上的文档,IRequiresRequestStream
仅用于将请求主体作为字节流访问,要处理使用 multipart/form-data
上传的多个文件,请使用 base.Request.Files
属性 而不是,例如:
上传文件
您可以使用 Request.Files
独立于请求 DTO 访问上传的文件。例如:
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 example shows how to access the 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("/");
}