【问题标题】:Hope to create gmail attachment preview like functionality using angularjs希望使用 angularjs 创建类似功能的 gmail 附件预览
【发布时间】:2015-07-19 07:28:42
【问题描述】:

我有一个要求,我想向用户显示文件预览。

支持多种文件类型,例如; .pdf、.xlsx、.doc、.rar、.jpeg、.png 等等。

当用户点击预览时,它应该在弹出窗口中打开文件,文件的预览会显示给他。用户可以放大、缩小、下载文件。正如您可以在 gmail 中查看附件预览一样。

请,任何人都可以指导我访问任何相关的图书馆或有用的资源。

提前致谢

【问题讨论】:

  • 放大/缩小会发生什么?它应该只适用于图像还是存档?
  • 你没有提到你使用的是什么服务器端技术栈。您需要在服务器端呈现预览并将预览图像发送到浏览器。
  • 这个问题太宽泛了,无法给出合理的答案。
  • 我推荐@AdrianBrand 的服务器端解决方案。什么是后端技术?

标签: javascript angularjs user-interface preview user-experience


【解决方案1】:

有两种主要方法可以做到这一点。

1) 服务器端:在服务器端(在文件上传时)将预览渲染为 jpg/png 图像,并将预览存储在服务器上。这在客户端最容易实现,但需要在服务器上提供额外的存储空间。

2) 客户端:在浏览器中使用 javascript“实时”渲染预览,这减少了服务器必须执行/存储的数量,但确实需要客户端在渲染之前完全下载内存中的文件预览,这对于大文件可能是一个问题。此外,您可能需要为每种单独的文件类型包含 javascript 库,因为大多数库将针对一种特定的文件格式。

服务器端可能是推荐的方式。您的网络服务器使用什么?

【讨论】:

    【解决方案2】:

    您正在考虑创建文档查看器。

    相信我,因为浏览器不理解这些格式,它的工作量很大。浏览器可以直接在画布上渲染图像,但它不知道如何渲染其他文件。因此,除图像格式之外的任何文件,都需要将它们临时保存在服务器上,然后在浏览器上流式传输并使用相应的文件查看器显示它们。

    您可以将 doc 和 xlsx 文件转换为 pdf 并使用 pdf 查看器 (http://ngmodules.org/modules/ng-pdfviewer) 显示这些文件。互联网上有很多可用的文档转换器(但是您需要检查许可条款,因为它们大多数是 GPL 许可的,因此不能用于商业项目)。

    如果您想保存这项工作,请使用第三方服务器,这些服务器会全部绘制以转换 html5 中的文档,例如 https://crocodoc.com/why-crocodoc/

    您也可以尝试使用谷歌文档查看器google doc veiwer

    【讨论】:

      【解决方案3】:

      这个问题相当广泛。我不会介绍如何实现附件查看器指令的所有步骤,但这里有一些您可能会发现有用的提示。

      要允许用户下载文件,您只需在某处放置一个下载链接。如果您将附件托管在 Amazon S3、Google Cloud Storage 或其他一些云存储服务上,请查看他们的文档。如果您从自己的服务器下载文件,请确保将Content-Disposition HTTP 响应标头设置为attachment; filename="ORIGINAL_FILENAME",其中ORIGINAL_FILENAME 是您希望用户在出现的保存对话框中看到的文件名。点击下载链接。

      现在转到查看器。

      对于 PDF 文件,我会使用 pdfJS。有一个角度指令here

      您可以查看 CloudConvert 之类的其他文件,将 ehm 转换为 PDF,然后在 pdfJS 中显示它们,但是除了原始文件之外,您可能还希望将 PDF 存储在您的服务器上文件,这需要额外的存储空间。您还可以使用 Google Docs 查看器或 Office 365 查看器,如this answer 中所述。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-30
        相关资源
        最近更新 更多