在 SPA 网站(.NET Core 2,SPA React 模板)中使用FileStreamResult
来自 C# 的文件,我从我的端点请求一个文件,这会在 C# 中触发此响应:
var file = await _docService.GetFileAsync(token.UserName, instCode.Trim()
.ToUpper(), fileSeqNo);
string contentType = MimeUtility.GetMimeMapping(file.FileName);
var result = new FileStreamResult(file.File, contentType);
var contentDisposition = new ContentDispositionHeaderValue("attachment");
Response.Headers[HeaderNames.ContentDisposition] =
contentDisposition.ToString();
return result;
返回的响应是使用处理的msSaveBlob
(特别是对于 MS,但即使我使用createObjectURL
不同的浏览器,这也是一个问题(是的,我已经尝试了多种解决方案,但它们似乎都不起作用)。这是我用来发送请求,并FileStreamResult
从服务器接收 PDF 。
if (window.navigator.msSaveBlob) {
axios.get(url).then(response => {
window.navigator.msSaveOrOpenBlob(
new Blob([response.data], {type: "application/pdf"}),
filename);
});
问题是我得到的返回的PDF文件以某种方式有错误的编码。所以PDF将无法打开。
我尝试在 type: 末尾添加编码,{type: "application/pdf; encoding=UTF-8"}
这在不同的帖子中有所建议,但是没有区别。
比较我以不同方式获取的 PDF 文件,我可以清楚地看到编码错误。大多数特殊字符都不正确。由响应头指示,PDF 文件应该在 中UTF-8
,但我不知道如何实际找出和检查。