在我的应用程序中,用户可以选择上传文件到一个<input type = "file" id = "my-file">
(HTML 5 文件输入)中。然后,我可以使用以下Javascript获取此文件:
var files = $("#my-file").files;
var file = files[0];
我能否以某种方式将var file
用作<object>
标签中的data
?这是一个<object>
标签示例,其中PDF是通过访问URL并与服务器联系来获取的。
<object data="data/test.pdf" /*<-- I want the var file here */ type="application/pdf" width="300" height="200">
</object>
我该怎么做才能实现这个?请注意,我必须支持Internet Explorer 11。
更新:
我尝试了一些最终以失败告终的方法。我使用FileReader将PDF转换为data-uri,然后将其用于<object>
标记的data
属性中,在Chrome中可以完美呈现,但在Internet Explorer中根本无法呈现。
var files = $(e.currentTarget.files);
file = files[0];
var reader = new FileReader();
reader.onloadend = function() {
var data = reader.result;
console.log(data);
$("#content").prepend('<object id="objPdf" data="'+data+'" type="application/pdf"></object>');
};
reader.readAsDataURL(file);
读者数据输出如下:
data:application/pdf;base64,JVBERi0xLjQKJe...
这就是为什么在Internet Explorer中使用此方法无法使用PDF文件(仅适用于图像)...太遗憾了 :(
更新2:
尝试使用pdf.js,有些成功...它可以在页面上显示PDF,但在Internet Explorer 11中非常缓慢(单个页面需要5秒)。 它也只能一次显示一页,而<object>
标签可以立即在一个不错的可滚动容器中显示所有页面。 虽然这是一个极端的后备选项,但我不想走这条路。
还有其他任何想法吗,如何在网页中直接预览用户上传的PDF文件?
<input type = "file">
,允许用户从他们的文件系统上传文件。我想获取这个文件(它将是一个 PDF),并允许用户预览它。我正在尝试将用户选择的文件(代码示例中的var file
)放入<object>
标签中。 - kibowki