我正在尝试使用Web API从数据提供程序接收帖子。
当我使用以下功能从我的web api保存请求时:
public async Task<HttpResponseMessage> Import(HttpRequestMessage request)
然后将以下代码中的流保存到文件中:
var stream = await request.Content.ReadAsStreamAsync();
我得到以下结果:
-------------------------- 2226e2cc2af7d11c
内容 - 处置:表单数据; NAME = “XML”;文件名= “test.xml.gz” Content-Type:application / octet-stream
[GZip数据在这里......]
-------------------------- 2226e2cc2af7d11c
内容 - 处置:表单数据; NAME = “myId1”
123
-------------------------- 2226e2cc2af7d11c
内容 - 处置:表单数据; NAME = “myId2”
456 -------------------------- 2226e2cc2af7d11c -
这当然不是正确的GZip格式。然后我尝试使用以下代码将请求作为多部分请求处理:
var streamContent = new StreamContent(stream);
streamContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/octet-stream");
var provider = await streamContent.ReadAsMultipartAsync();
但是,然后出现以下错误:
Invalid 'HttpContent' instance provided. It does not have a content type header starting with 'multipart/'
所以,我的问题是,如何从请求中的xml参数获取gzip数据?我需要保存gzip数据,然后解压缩并处理数据。
谢谢!
答案 0 :(得分:0)
解决方案是创建一个自定义的MultipartFormDataStreamProvider。
我在本文中找到了一个解决方案:Web API: how to access multipart form values when using MultipartMemoryStreamProvider?