【发布时间】:2016-12-24 18:52:09
【问题描述】:
我在 jQuery 中搜索一些东西时遇到了blob。谷歌了一下,但无法确切地弄清楚它是什么概念。
我找到了通过 Ajax 下载 pdf 文件的代码。
$.ajax({
method: 'GET',
dataType: 'blob',
data: { report_type: report_type, start_date: start_date, end_date: end_date, date_type: date_type },
url: '/reports/generate_pdf.pdf',
success: function(data) {
var blob=new Blob([data]);
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="Report_"+new Date()+".pdf";
link.click();
console.log("pdf printed");
}
});
此代码运行良好,但打印空 pdf 时没有静态或动态内容。但是有一个奇怪的行为。 IE。如果计算的动态数据太大,则生成多个页面。
我只是想弄清楚blob 的概念,以便我自己弄清楚这段代码在做什么以及blob 是如何工作的。
任何适当的指导或帮助将不胜感激。提前致谢!
【问题讨论】:
-
这意味着您希望从服务器返回二进制数据。
-
jQuery.ajax()默认不返回Blob响应。 -
那我需要做什么。普通 html 的行为方式也相同
-
您是否尝试过使用
XMLHttpRequest()并将responseType设置为Blob? -
很可能是从数据库(或文件系统)中检索 blob 作为字节数组。在这种情况下,它是您的 pdf 或 word 文档,但可以是用于生成图像、音频等的任何二进制数据数组。确保您从 generate_pdf.pdf 脚本(或任何可能被修改的地方)返回正确的 mime 类型服务器)并且您已获得正确的编码。
标签: javascript jquery blob