如何解决PDF 未下载 MVC dotnet 核心 3.1“无法下载”错误
从 MVC 3.1 控制器提供 pdf 文件会生成“无法下载 - 网络错误”消息,但服务器上没有任何错误,并且响应标头似乎具有正确的数据(附上截图)。
浏览器屏幕截图/响应标题
控制器代码
这似乎是实现这一目标的可接受方式之一。
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Download([FromForm] IFormCollection formCollection)
{
...
// rawPdf is a byte[]
var rawPdf = await _pdfFileService.GetMergedPdfFilesAsync(mergedFileName,pdfDirectoryPath,pathList);
MemoryStream ms = new MemoryStream();
ms.Write(rawPdf,rawPdf.Length);
//fix
ms.Position = 0;
// also tried
//return File(ms,"application/pdf",mergedFileName);
return new FileStreamResult(ms,new MediaTypeHeaderValue("application/pdf"))
{
FileDownloadName = mergedFileName
};
}
解决方法
啊哈!脑残问题。这是修复:ms.Position = 0
。
说明:流在末尾,所以当它试图将其刷新时,它已经在末尾。上面的代码行将流重置到起始位置,以便可以流式传输。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。