我有一个用base64创建的Blob,我需要将此数据下载为pdf。
我创建了以下代码段:
var blob = new Blob([byte]);
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.target = '_blank';
var fileName = name + '.pdf';
link.download = fileName;
link.click();
Run Code Online (Sandbox Code Playgroud)
它适用于所有浏览器,但iOS上的safari mobile除外。
该文件实际上已下载,但名称为“未知”,由于扩展名丢失,因此无法打开。
问题在于,下载属性缺少对此浏览器和IE的支持。
IE有很多解决方法,但我没有在Safari / iOS中找到任何解决方法。
您知道如何在此浏览器中下载从base64(不涉及XHR)获得的Blob吗?
谢谢
我正在尝试使用ajax调用从服务器(jsp)下载pdf文件,我从服务器获取Base 64格式的数据,然后将其转换为ArrayBuffer,然后使用blob对象下载,以下代码对每种浏览器都适用,除了iPhone中的Chrome甚至iPhone的Safari中都可以正常使用,我不知道这是什么问题,对此的任何帮助将不胜感激
function hello(id)
{
//alert(id);
//alert(id);
var ln="en";
$.ajax({
type:'post',
url:'ajaxurl',
data:{lang:ln,num_srno:id},
success:function(data){
//alert(data);
/* var bytes = new Uint8Array(data); // pass your byte response to this constructor
var blob=new Blob([bytes], {type: "application/pdf"});// change resultByte to bytes
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download="myFileName.pdf";
link.click();*/
var sampleArr = base64ToArrayBuffer(data);
saveByteArray("Sample Report", sampleArr);
}
});
}
function base64ToArrayBuffer(base64) {
var binaryString = window.atob(base64);
var binaryLen = binaryString.length;
var bytes = new Uint8Array(binaryLen);
for (var i = 0; i < binaryLen; i++) {
var …Run Code Online (Sandbox Code Playgroud)