vue - - - - - 在线预览常见文件格式 .doc, .docx, .xls, .xlsx,.pdf,.ofd

关于一些文件的在线预览,最简易的实现方式是什么呢?

写在前面

  • .png, .jpg, .jpeg等图片格式 直接预览http/https地址即可
  • .pdf文件直接预览http/https地址即可
  • .doc, .docx, .xls, .xlsx等类型文件,需要在预览地址之前拼接上https://view.officeapps.live.com/op/view.aspx?src=
  • .ofd等类型文件,需要在预览地址之前拼接上https://ofd.xdocin.com/view?src=

1.HTML5 - embed标签

1.1 注意⚠️

embed标签定义嵌入的内容,这个标签是自闭合的,也就是说如果浏览器不支持PDF的嵌入,那么这个标签的内容什么都看不到

1.2 使用方式

【HTML embed标签】

属性描述
heightpixels规定嵌入内容的高度。
widthpixels规定嵌入内容的宽度。
srcURL规定被嵌入内容的 URL。
typeMIME_type规定嵌入内容的 MIME 类型。注:MIME = Multipurpose Internet Mail Extensions。
<embed :src="iframeSrc" width="100%" height="100%" />

2. HTML - iframe标签

2.1 注意⚠️

iframe方法是嵌入PDF的最简单方法之一。但是,如果iframe浏览器不支持PDF呈现,则可能无法提供足够的后备内容

2.2 使用方式

【HTML iframe标签】

<iframe :src="iframeSrc" width="100%" height="100%">
  该浏览器无法支持PDF,请点击查看:
  <a :href="iframeSrc">下载 PDF</a>
</iframe>

3. HTML - object

3.1 注意⚠️

embed不同,object如果浏览器不支持PDF嵌入,则该元素可提示内容。所有浏览器都支持object元素,但是,每个浏览器中的实现方式通常存在差异。如果您使用该object元素,请务必在浏览器和操作系统中彻底测试您的页面。

3.2 使用方式

【HTML object标签】

<object :data="iframeSrc" type="application/pdf" width="100%" height="100%">
    该浏览器不支持PDF.请点击查看:
    <a :href="iframeSrc">下载 PDF</a>.</p>
</object>

4. 更多预览方式

【vue-pdf】

5. 代码示例

  <!-- 预览弹窗 -->
  <a-modal
    class="preview-modal"
    :class="[isImage ? '' :'preview-file']"
    v-model:visible="visible"
    title="预览"
    :width="isImage?'500px':'80%'"
    :afterClose="afterClose"
    :destroyOnClose="true"
    :footer="null"
  >
    <img v-if="isImage" :src="iframeSrc" alt />
    <embed v-else :src="iframeSrc" type="application/pdf" width="100%" height="100%" />
  </a-modal>


  <script>
    const imageFileType = " .png, .jpg, .jpeg"; // 图片格式,单独预览
    const microsoftFileType = " .doc, .docx, .xls, .xlsx"; // 微软文件格式,单独预览
  	 // 预览相关信息数据
    const annexConfig = reactive({
      updateData: {},
      headers: { Authorization: localStorage.getItem("token") },
      action: '',
      accept: "", // 需要支持的文件格式
      fileList: [], // 文件列表
      visible: false, // 是否预览
      isImage: false, // 是否为图片格式预览
      iframeSrc: "" // 预览地址
    });
    
    /**
     * 预览附件
     */
    const PreviewAnnex = file => {
      const previewName = file.name || file.fileName;
      let index = previewName.indexOf(".");
      const type = previewName.slice(index);
      const PREFIX = "https://view.officeapps.live.com/op/view.aspx?src="; // word、excel 等Microsoft办公文件预览之前需要先拼接上
      const OFDPREFIX = "https://ofd.xdocin.com/view?src="; // ofd文件预览前缀

      const previewPath = file.fileUrl;

      let path = "";
      if (imageFileType.includes(type)) {
        // 图片格式
        path = `${previewPath}`;
        annexConfig.isImage = true;
      } else if (microsoftFileType.includes(type)) {
        // 微软文件格式
        path = `${PREFIX}${encodeURIComponent(previewPath)}`;
        annexConfig.isImage = false;
      } else if (type == "ofd") {
        // ofd格式
        path = `${OFDPREFIX}${encodeURIComponent(previewPath)}`;
        annexConfig.isImage = false;
      } else {
        // pdf文件格式
        path = `${previewPath}`;
        annexConfig.isImage = false;
      }

      annexConfig.visible = true;
      annexConfig.iframeSrc = path;
    };
  </script>

6. 遇到的问题!!!!!!!!

在预览word和excel文件的时候,因为使用的是https://view.officeapps.live.com/op/view.aspx?src=文件地址这种方式。
这种方式可以预览的前提是:

  1. 文件地址外网可以访问
  2. 文件地址返回头的header是对应的文件格式!!!!!!!

在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在vue-quill-editor中实现文件上传功能,您可以使用@vueup/vue-quill插件。此插件提供了自定义上传图片到服务器、粘贴图片上传至服务器、拖拽图片上传至服务器的功能。您可以参考quill-image-paste-module文档了解更多关于这些功能的信息。 关于上传.docx格式文件,您可以按照以下步骤实现: 1. 首先,确保您已经安装了@vueup/vue-quill插件,并在您的Vue项目中引入它。 2. 然后,您需要配置文件上传的接口。您可以使用后端技术(如Node.js)创建一个文件上传的API,并将其与vue-quill-editor集成。在API中,您可以使用合适的文件上传库(如multer)来处理.docx格式的文件上传。 3. 在vue-quill-editor的配置中,您可以使用自定义的上传功能来处理文件上传事件。可以通过配置`image-upload`选项来实现这一点,将上传的文件发送到您之前配置的文件上传接口。 4. 在vue-quill-editor中,您可以通过设置`formats`选项来指定可接受的文件格式。您可以将您希望接受的文件格式(例如.docx)添加到此选项中。 通过以上步骤,您就可以在vue-quill-editor中实现上传.docx格式文件的功能。请参考@vueup/vue-quill的文档和示例,以获取更详细的配置和使用方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [vite vue-quill 构建基本案例](https://blog.csdn.net/m0_46262108/article/details/128855156)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值