我有一个ASP.NET应用程序,其背后的代码服务于多部分POST请求,由两部分组成:JSON和代表音频的字节流。 POST主体看起来像这样:
--8f2a0a01-2114-42ca-a176-51badb488534
Content-Type: application/json; charset=utf-8
Content-Disposition: form-data; name=jsonName
{JSON}
--8f2a0a01-2114-42ca-a176-51badb488534
Content-Type: audio/wav
Content-Disposition: form-data; name=audioName
(byte stream)
--8f2a0a01-2114-42ca-a176-51badb488534
我的问题是从第二部分(音频)检索字节流。我已经尝试了几种技术,我使用的任何API都将这个字节流作为字符串返回给我,在此之后,当我将其序列化为文件时,文件无法播放。例如(但不仅仅):
foreach (string key in HttpContext.Current.Request.Form.AllKeys)
{
var multiPartValue = HttpContext.Current.Request.Form[key];
//DO SOMETHING
}
我得出结论,转换为字符串会破坏原始音频字节流,我需要按原样检索原始字节流(可能是byte [])而不进行任何转换。任何关于如何实现这一点的建议都将非常感激
答案 0 :(得分:0)
这可能有用(如果没有适当的客户端代码,则无法测试):
var content = new StreamContent(Request.InputStream);
content.Headers.ContentType =
System.Net.Http.Headers.MediaTypeHeaderValue.Parse(
"multipart/form-data; 8f2a0a01-2114-42ca-a176-51badb488534");
var streamProvider = content.ReadAsMultipartAsync().Result;
foreach (var contentPart in streamProvider.Contents)
{
if (contentPart.Headers.ContentType.MediaType == "audio/wav")
{
var bytes = contentPart.ReadAsByteArrayAsync().Result;
}
}
您需要安装Microsoft.AspNet.WebApi.Client包