我在 Web API 项目的实用程序中有一些 C#。代码的上传部分工作正常;我已验证到达服务器的文件与上传的文件是否匹配。但是,下载过程中发生了一些事情,导致客户端将文件视为已损坏,当我进行比较时,我可以看到出现了问题。
不幸的是,我不知道我做错了什么。该实用程序的相关部分如下:
public static HttpResponseMessage StreamResponse(this HttpRequestMessage request, Stream stream)
{
if (stream.CanSeek) stream.Position = 0;// Reset stream if possible
HttpResponseMessage response = request.CreateResponse(HttpStatusCode.OK);
response.Content = new StreamContent(stream);
if (stream is FileStream)
{// If this is a FileStream, might as well figure out the content type
string mimeType = MimeMapping.GetMimeMapping(((FileStream)stream).Name);
response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(mimeType);
}
return response;
}
public static HttpResponseMessage DownloadAs(this HttpResponseMessage response, string fileName)
{
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
response.Content.Headers.ContentDisposition.FileName = fileName;
response.Content.Headers.ContentType = MediaTypeHeaderValue.Parse(MimeMapping.GetMimeMapping(fileName));
return response;// For chaining or whatnot
}
我在 API 控制器中的用法是return ResponseMessage(Request.StreamResponse(stream).DownloadAs("Filename.ext"));
我已经仔细检查了下载代码,这似乎与我发现的相符。我做错了什么或者我错过了什么?看起来编码或字符集有问题,但我不知道解决方案是什么。
终于解决了这个问题,感谢本次问答 https://stackoverflow.com/questions/33051467/corrupted-download-in-angularjs-app。我缺少responseType 选项/参数$http https://docs.angularjs.org/api/ng/service/%24http调用客户端代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)