3
我在一個Web API項目的實用程序中有一些C#。代碼的上傳部分工作正常;我已驗證獲取到服務器的文件是否與上傳的文件匹配。但是,下載中發生了一些事情,導致客戶端將文件視爲已損壞,並且當我執行差異操作時,我可以看到出現問題。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"));
我仔細檢查過代碼下載,而這似乎與我所發現的匹配。 我在做什麼錯,或者我錯過了什麼?它看起來像編碼或字符集有問題,但我不知道解決方案是什麼。