--更新--
因此,我尝试创建一个文件预览器,允许用户在前端上传文件,以blob的形式访问浏览器文件,并在iframe中预览它们。
必须能够预览所有打开的文档文件
我目前的问题是viewer.js(http://viewerjs.org/instructions/)似乎不能处理blob文件。这是我得到的最接近的信息.. https://github.com/kogmbh/ViewerJS/issues/230
有什么想法的方法,让这个工作与所有打开的文档文件?插件建议?
当前代码如下..
fileUploadProcessFiles: function(fileInput){
console.log("MODALJS.fileUploadProcessFiles");
var m = $(document).find("#modal"),
list = $("#uploadList"),
files = fileInput.files,
type = m.find("option:selected").text();
for (var i = 0; i < files.length; i++) {
// Display List
list.append(`<div class='hundredWidth'>"+
<label class='autoWidth underline'>${type}</label><label class='cancelIconSmall inlineBlock' onclick='MODALJS.fileUploadRemoveFile(this)' style='margin-left: 10px'></label>
<label class='oneWide'>${files[i].name}</label>"
</div>`);
// Store Preview Links
var blobURL = URL.createObjectURL(files[i]);
MODALJS.fileUploadPreviewLinks.push(blobURL);
// Append Iframe Preview
list.append(`<iframe src="${MODALJS.fileUploadPreviewLinks[i]}" allowfullscreen webkitallowfullscreen width="400px" height="400px"></iframe>`);
// Push to upload queue
MODALJS.fileUploadFiles.push(["file", files[i]]);
}
},
--更新#2--
所以我把它弄明白了。我不得不使用一个不同的plugin. webODF代替...我现在应该可以拼凑出一个足够体面的解决方案了。
fileUploadProcessFiles: function(fileInput){
console.log("MODALJS.fileUploadProcessFiles");
var m = $(document).find("#modal"),
list = $("#uploadList"),
files = fileInput.files,
type = m.find("option:selected").text();
for (var i = 0; i < files.length; i++) {
// Display List
list.append(`<div class='hundredWidth'>"+
<label class='autoWidth underline'>${type}</label><label class='cancelIconSmall inlineBlock' onclick='MODALJS.fileUploadRemoveFile(this)' style='margin-left: 10px'></label>
<label class='oneWide'>${files[i].name}</label>"
</div>`);
// Store Preview Links
var blobURL = URL.createObjectURL(files[i]);
MODALJS.fileUploadPreviewLinks.push(blobURL);
// Append Iframe Preview
list.append(`<div id="odfCanvas"></div>`);
odfElement = document.getElementById("odfCanvas");
odfcanvas = new odf.OdfCanvas(odfElement);
odfcanvas.load(blobURL);
// Push to upload queue
MODALJS.fileUploadFiles.push(["file", files[i]]);
}
},
2条答案
按热度按时间xqkwcwgp1#
上传的文件没有URL。至少不是传统意义上的“资源定位器”。您可以通过
FileReader.result
属性访问该文件。这个代码片段或多或少是directly from MDN。添加了一些注解来澄清(希望)在哪里发生了什么。
第一个
**评论问题更新:**PDF是很棘手的。嗯,任何不是在浏览器中本地呈现的东西都是棘手的或不可能的。你可以尝试
URL.createObjectURL(file)
,然后将其作为iframe的源代码来触发浏览器本身并不完全本地的PDF呈现。你也可以尝试Mozilla的pdf.jsruarlubt2#
https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsDataURL
看起来
readAsDataUrl
是你想要的。