【问题标题】:Preview .doc/.docx/.pdf files before uploading to server在上传到服务器之前预览 .doc/.docx/.pdf 文件
【发布时间】:2013-06-25 01:00:51
【问题描述】:

我正在使用 HTML5 File API 上传一些文档(.doc/.docx/.pdf)。我想在将其上传到服务器之前显示该文档预览。有没有办法在客户端做这样的事情?

附: Google Docs Viewer 不行,因为它需要可以从 Internet 访问文档。

【问题讨论】:

  • 不,你不能那样做。您需要在客户端有一个文档查看器。 (例如插件)
  • 你为什么需要这个?他们不能在上传之前自己查看文档吗?
  • 是否可以尝试从文件中提取一些元数据并将其用作小型健全性预览?大小、标题、作者、第一句话等。至少应该可以使用我认为只是 xml 的 docx?
  • @Svish 好主意。我会考虑的。谢谢。

标签: javascript jquery html


【解决方案1】:

我尝试创建一个小示例,在上传 PDF 文件之前显示 PDF 预览。

<!DOCTYPE html>
  <html lang="en">
    <head>
        <title>JavaScript PDF Viewer Demo</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
        <script type="text/javascript">
            function PreviewImage() {
                pdffile=document.getElementById("uploadPDF").files[0];
                pdffile_url=URL.createObjectURL(pdffile);
                $('#viewer').attr('src',pdffile_url);
            }
        </script>
    </head>
    <body>
        <input id="uploadPDF" type="file" name="myPDF"/>&nbsp;
        <input type="button" value="Preview" onclick="PreviewImage();" />

        <div style="clear:both">
           <iframe id="viewer" frameborder="0" scrolling="no" width="400" height="600"></iframe>
        </div>
    </body> 
</html>

【讨论】:

  • 适用于 Firefox 62 和 63、Chrome 70、Edge 42,但不适用于 IE11。
  • 这会下载 Firefox 和 Chrome 中的所有 MS word 文件。
【解决方案2】:

不确定是否还有人检查此线程,但我想我会分享我所做的。 无法直接显示预览,但您可以创建所选文件的 blob 对象。像这样的东西(jQuery):

$('#input').change(function (event) {
    var file = URL.createObjectURL(event.target.files[0]);
    $('element').append('<a href="' + file + '" target="_blank">' + event.target.files[0].name + '</a>');
});

此链接将打开一个新的浏览器选项卡并显示/下载文件。这不是很漂亮,但它确实有效。 这是一个例子:https://jsfiddle.net/j9gw023b/3/

【讨论】:

  • 如果你发布 jsfiddle 会更好。
  • 这最终成为了适合我的答案。您可以在对象标记内显示 Blob,最终进行正确的上传预览。我会发布一个带有我的更改的 JSFiddle,但我无法渲染一个嵌入的对象,因为它是沙盒的。
【解决方案3】:

没有。这是不可能的。

您希望浏览器查看它不应该查看的数据文件。您有 Office 或 PDF 查看器(好的,已授权,PDF ssem 现在可以在浏览器中...)来查看您的数据文件。

如果您想在浏览器中显示预览,您必须先上传它并将其存储在“for-preview”目录或其他东西中。确定后,将其移动到最终目的地,否则,删除。

【讨论】:

    【解决方案4】:

    File API 将允许您从文件中读取数据,但是您会遇到解析和渲染它的麻烦。 Mozilla 发布了JavaScript PDF viewer,但我不知道任何有关 MS Office 文件的信息。

    【讨论】:

    【解决方案5】:

    在过去你能够做这样的事情:

    <object data="word.doc">You do not have Word installed on your machine</object>
    

    不确定是否仍然支持,但如果支持,您可以使用 JS 将该对象注入到页面上以进行预览。

    【讨论】:

    • 不过,您需要先上传它才能查看它。或者您是在谈论浏览器从在线 HTML 文档访问本地数据?这在很多层面上都是个坏主意。
    • 这是个糟糕的主意,但如果这家伙绝望了,就看不到其他办法了。
    • 如果这个人绝望了,他应该拒绝这个任务。把它还给客户,告诉他们在他为他的软件制定的质量/安全要求范围内是不可能的。最好什么都不提供,而不是远低于您的质量标准。它会永远追捕你。
    【解决方案6】:

    Ajax 上传你的文件,上传后返回路径名并预览。

    blueimp 的 jQuery-File-Upload 非常适合我。

    你可以查看它的基本插件。

    https://github.com/blueimp/jQuery-File-Upload/wiki/Basic-plugin

    【讨论】:

      【解决方案7】:

      你可以用pdf来做,这里是教程:

      https://usefulangle.com/post/87/javascript-preview-pdf-during-upload

      不知道doc/docx是否可以

      【讨论】:

        【解决方案8】:
        猜你喜欢
        • 1970-01-01
        • 2016-05-11
        • 2023-03-31
        • 2018-11-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-16
        • 1970-01-01
        • 2019-10-12
        相关资源
        最近更新 更多