我正在编写一个服务来处理使用文件的mutlipart / formdata编码从浏览器发送的请求。
我看到我可以通过使用接口IRequiresRequestStream修改我的请求DTO并提供名为RequestStream的属性来访问原始输入流。但这样做似乎意味着我无法填写任何请求属性,即使URL中包含的属性也是如此。例如,我的请求路由设置如下
[Route("/document/{Type}/{Id}", "GET,PUT,POST/DELETE")]
public class UploadFileRequest : IReturn<UploadFileResponse>, IRequiresRequestStream
{
public long Id { get; set; }
public string Type { get; set; }
public Stream RequestStream { get; set; }
}
当我向此服务发送PUT请求时,我看到RequestStream属性是按照我的意愿设置的,但Id和Type属性为null。 https://groups.google.com/forum/#!msg/servicestack/l9qFvZNbuT0/dwyRQKBhmlMJ似乎表明会发生这种情况。
有没有办法获取路由参数并仍然可以访问请求流?即便如此,我似乎还需要处理解析表单数据,但希望我能找到一个库来轻松完成。
答案 0 :(得分:2)
Combining URL and POST variables in ServiceStack实际上帮助解决了这个问题。可以从服务中访问Request对象上的属性FormData和Files,它们包含所需的信息。因此DTO不包含RequestStream属性或实现IRequiresRequestStream接口