html 如何获取前端上传文件的文件url

8e2ybdfx  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(404)

--更新--
因此,我尝试创建一个文件预览器,允许用户在前端上传文件,以blob的形式访问浏览器文件,并在iframe中预览它们。

必须能够预览所有打开的文档文件

我目前的问题是viewer.jshttp://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]]);
            }

        },
xqkwcwgp

xqkwcwgp1#

上传的文件没有URL。至少不是传统意义上的“资源定位器”。您可以通过FileReader.result属性访问该文件。
这个代码片段或多或少是directly from MDN。添加了一些注解来澄清(希望)在哪里发生了什么。
第一个

**评论问题更新:**PDF是很棘手的。嗯,任何不是在浏览器中本地呈现的东西都是棘手的或不可能的。你可以尝试URL.createObjectURL(file),然后将其作为iframe的源代码来触发浏览器本身并不完全本地的PDF呈现。你也可以尝试Mozilla的pdf.js

相关问题