我一直在尝试显示pdf文件,我从$http.post响应中获取blob .例如,pdf必须在应用程序中显示<embed src>.
我遇到了几个堆栈帖子,但不知怎的,我的例子似乎不起作用.
JS:
根据这份文件,我继续尝试......
$http.post('/postUrlHere',{myParams}).success(function (response) {
var file = new Blob([response], {type: 'application/pdf'});
var fileURL = URL.createObjectURL(file);
$scope.content = fileURL;
});
Run Code Online (Sandbox Code Playgroud)
根据我的理解,fileURL创建一个临时URL,博客可以将其用作参考.
HTML:
<embed src="{{content}}" width="200" height="200"></embed>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在Angular中处理这个问题,理想的情况是(1)将它分配给范围,(2) '准备/重建'blob到pdf (3)将其传递给HTML使用<embed>因为我想要在应用程序中显示它.
我已经研究了一天以上但不知何故我似乎无法理解它在Angular中是如何工作的......让我们假设那里的pdf查看器库没有选项.
我有一个奇怪的问题,下面的函数是我创建的基于我在网上发现的关于在客户端动态创建一个Blob的一个二进制数据(作为数组传递)并能够下载它.这在Chrome中非常出色,但在Firefox中没有做任何事情 - 除非我调试并逐步完成代码.是的,奇怪的是,如果我在函数内创建一个断点并逐步执行它,a.click()将调出下载窗口!
function downloadFile(filename, data) {
var a = document.createElement('a');
a.style = "display: none";
var blob = new Blob(data, {type: "application/octet-stream"});
var url = window.URL.createObjectURL(blob);
a.href = url;
a.download = filename;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
window.URL.revokeObjectURL(url);
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我?这是使用Firefox 38.0.5测试的.
我想在浏览器窗口中打开Blob对象.
这个代码可以在任何地方工作,但iOS Chrome(和IE当然,但我可以解决IE).窗口未重定向到URL(这是正确的或至少与其他浏览器相同).Chrome iOS有任何已知的解决方法吗?
var blob = new window.Blob(['Hello, world!'], {type: 'text/plain;charset=utf-8'});
window.URL = window.URL || window.webkitURL;
var url = window.URL.createObjectURL(blob);
window.location.href = url;
Run Code Online (Sandbox Code Playgroud)
我试过<a href="{blobUrl}>而不是window.location.href但它也不起作用.
我在Ipad + Safari中保存Excel文件时遇到问题。请注意,我唯一的问题是Ipad / Iphone IOS + Safari。
我用来实现“另存为”功能的库是 FileSaver.js,但它确实存在Safari的此错误。
到目前为止,我尝试过的解决方案:
var blob = new Blob([jx_s2ab(wbout)], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'});
var a = window.document.createElement("a");
a.href = window.URL.createObjectURL(blob);
a.download = "textexcel.xlsx";
a.target = "_blank"
document.body.appendChild(a);
a.click();
document.body.removeChild(a);Run Code Online (Sandbox Code Playgroud)
var blob = new Blob([jx_s2ab(wbout)], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'});
var reader = new FileReader();
reader.onload = function(e){
window.location.href = reader.result;
}
reader.readAsDataURL(blob);Run Code Online (Sandbox Code Playgroud)
在以上所有解决方案中,到目前为止最好的一种:File Reader API。它确实可以正常工作,并且我可以使用正确的数据打开文件,但是唯一的问题是文件名,没有选项可以在新选项卡中打开。在Ipad + Safari中,文件名显示为“ unknown.xlsx”,这不是很好的用户体验。
如果可以解决文件名问题或任何其他库,请分享。