jquery - 下载文件时“构造‘Blob’失败:提供的值无法转换为序列”
问题描述
我正在尝试使用 ajax/jquery 下载并保存 PDF 文件(我知道..)。
这是我在服务器端所拥有的:
public HttpResponseMessage GetPdf()
{
var pdf = generatePdfByteArray(); // byte[]
var result = Request.CreateResponse(HttpStatusCode.OK);
result.Content = new ByteArrayContent(pdf);
//result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
//{
// FileName = "blah.pdf"
//};
// tried with and without content disposition.. shouldn't matter, i think?
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
return result;
}
这是客户端:
let ajaxOptions = {
url: '/url',
type: "GET",
accepts: "application/pdf",
success: (data) => {
let blob = new Blob(data, {
type: "application/pdf"
}); // <-- this fails
// stuff...
}
};
$.ajax(ajaxOptions);
任何想法这有什么问题?
解决方案
第一个参数应该是序列。
因此,这将不起作用:
let blob = new Blob(data, {
type: "application/pdf"
});
但这将:
let blob = new Blob([data], {
type: "application/pdf"
});
推荐阅读
- python - pygame sprite 与背景元素的碰撞
- reactjs - ReactJS onClick setState 在子组件中不起作用
- java - 找不到 .findNavController() 的正确上下文
- django - 如何将 request.user / user 传递给 Django 中的消息
- reactjs - 本地存储与 redux 状态
- oracle - 如何从过程中运行 UTL_RECOMP.RECOMP_PARALLEL?
- php - Mysql php - 如何保存没有空格和特殊字符的文件
- python - 使用 Tkinter 创建重复行
- serial-port - 尝试从串行端口检索数据但程序卡在 getchar
- c# - 如何将字符串作为参数传递给对象