文件预览功能/文件流前端展示

这篇具有很好参考价值的文章主要介绍了文件预览功能/文件流前端展示。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一种方式:

文件预览展示

转换为 Blob对象

  // 预览图片 或者pdf格式文件
  getViewImg(id: string) {
    return this.http.get(`/workflow/attachment/viewImg/${id}`, {
      observe: 'response',
      responseType: 'blob'
    });
  }
    // 预览word文件或Excel文件
  getViewFile(id: string) {
    return this.http.get(`/workflow/attachment/view/${id}`, {
      observe: 'response',
      responseType: 'blob'
    })
  }

预览实现ts代码

  // 附件预览
  handlePreviewClick(item: any) {
    if (!this.isPreviewModalVisible) {
      this.changeIsSpinning.emit(true);
      this.isPreviewModalVisible = true;
      this.id = item.id;
      this.isImage = this.handleiIsImage(item.attachmentName);
      this.isPDF = this.handleiIsPDF(item.attachmentName);
      let type = (this.isImage || this.isPDF) ? 'getViewImg' : 'getViewFile';
      this.service[type](this.id).subscribe(
        async (res: any) => {
          if (this.isImage) {
            const downloadUrl = window.URL.createObjectURL(res.body);
            this.fileHTML = downloadUrl;
          } else if (this.isPDF) {
            let newBlob = new window.Blob([res.body], { type: 'application/pdf;charset-UTRF-8' })
            const downloadUrl = window.URL.createObjectURL(newBlob);
            this.fileHTML = downloadUrl;
          } else {
            this.fileHTML = await res.body.text();
          }
          this.changeIsSpinning.emit(false);
        }, () => {
          this.messageService.error('加载失败');
          this.isPreviewModalVisible = false;
          this.changeIsSpinning.emit(false);
        }
      )
    }
  }

弹窗代码

<nz-modal *ngIf="fileHTML" [nzStyle]="{ top: '50px' }" [nzWidth]="1100" [nzBodyStyle]="bodyStyle" [nzContent]="modalContent" [(nzVisible)]="isVisible" nzTitle="预览"
  [nzFooter]="modalFooter" (nzOnCancel)="handleCancel()">
  <ng-template #modalContent>
    <div *ngIf="!isImage&&!isPDF" [innerHtml]="fileHTML"></div>
    <img *ngIf="isImage" [src]="fileHTML" alt="加载失败" style="max-width:1044px"/>
    <iframe *ngIf="isPDF" [src]="fileHTML" alt="加载失败" style="width:1044px;height: 510px;"></iframe>
  </ng-template>
  <ng-template #modalFooter>
    <button nz-button nzType="primary" (click)="handleOk()">确定</button>
  </ng-template>
</nz-modal>

第二种方式:

简单粗暴

展示:

//1、请求接口 请求设置responseType
axios.get(url,{resonseType:'blob'})

//2.根据返回的值创建一个Blob对象, 以pdf文件为例
let blob = new Blob([result],{
       type: "application/pdf;chartset=UTF-8"
})

//3.window.URL.createObjectURL创建一个url连接
let blob = new Blob([result],{
       type: "application/pdf;chartset=UTF-8"
})
let url = window.URL.createObjectURL(blob)

//4.在线预览
//可以用iframe预览,url的值为 window.URL.createObjectURL(blob),或者直接打开window.open(url)

打印:文章来源地址https://www.toymoban.com/news/detail-757888.html

//1.创建iframe标签
const iframe = document.createElement('iframe')

//2.属性相关
iframe.className = 'tmp-pdf';
iframe.style.display = 'none'
// blobUrl 像在线预览1,2,3这样得来的url
iframe.src = blobUrl

//3.创建好的iframe添加到页面body
document.body.appendChild(iframe)

//4.执行打印方法,并移除iframe
setTimeout(function() {
   iframe.contentWindow.print()
   document.body.removechild(iframe)
}, 100)

到了这里,关于文件预览功能/文件流前端展示的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue实现前端视频展示列表及特征提取、笔记、删除、文件夹组织功能

    Vue实现前端视频展示列表及特征提取、笔记、删除、文件夹组织功能 在前端展示上传的视频列表时,我们可以使用Element-UI中的Card组件来实现。同时,我们还可以添加一些功能,如缓存播放的视频、选择视频文本特征提取处理、写笔记、删除视频、组织成文件夹结构等。下面

    2024年02月10日
    浏览(39)
  • 前端展示 PDF 预览的几种方法

    一、js实现pdf预览 HTML 内联框架元素 iframe 表示嵌套的 browsing context。它能够将另一个 HTML 页面嵌入到当前页面中。 HTML embed 元素将外部内容嵌入文档中的指定位置。此内容由外部应用程序或其他交互式内容源(如浏览器插件)提供 HTML object 元素(或者称作 HTML 嵌入对象元素)

    2024年02月09日
    浏览(31)
  • 前端系统使用iframe下载文件

    前端调用后端的接口,获取到文件的路径,并下载。 页面组件存在与云端的组件库,使用window.open()无法满足需求(在当前页面下载),因为路径是跨域的,所以决定使用iframe的方式下载,部分代码如下:

    2024年02月14日
    浏览(17)
  • 用html+javascript打造公文一键排版系统2:显示源码/显示预览、清除格式

    我们从实现最简单、最基本的功能开始。 一、显示源码/显示预览 我们通过btnShowSrc来实现示源码/显示预览功能,根据btnShowSrc.value来判断iframe的显示的内容并切换。 iframe默认为显示预览,所以btnShowSrc.value值为“显示源码”,点击它后,iframe就显示源码,并将按钮的value改为“

    2024年02月13日
    浏览(37)
  • 前端视频预览功能的实现

    CSDN话题挑战赛第2期 参赛话题:前端技术分享 这是我模仿B站所写项目遇到的第二个很有挑战性的部分,网上的资料比较缺乏,还是大佬室友换了个才搜到比较有用的资料hh。 之前没有写过视频相关的项目,所以视频相关的API都十分陌生。从最开始的一无所知,一步步

    2023年04月08日
    浏览(19)
  • 前端根据url在线预览功能

    根据使用的组件库直接预览 新窗口打开

    2024年02月14日
    浏览(30)
  • vue+pdf.js预览本地pdf文件(可以复制文本,滚动页码展示)

    1、安装pdfjs-dist插件,推荐使用2.0.943这个版本 2、页面中引入使用 3、页面标签 3、解析pdf,获取pdf所有页数据,使用canvas渲染,并使用TextLayerBuilder创建文本层,可以复制文本信息 在渲染pdf数据时,当pdf文件很大渲染量很多时,会导致页面卡住,无法执行其他操作;这涉及到

    2024年01月21日
    浏览(38)
  • [HTML]Web前端开发技术3(HTML5、CSS3、JavaScript )超链接,target,scrolling,marginwidth,frameborder,iframe——喵喵画网页

    希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,佬佬会看到更多有趣的博客哦!!! 喵喵喵,你对我真的很重要! 目录 前言 超链接 概述 超链接语法、路径及分类 超链接标签 超链接路径 相对路径的用法 超链接分类 超链接的

    2024年02月05日
    浏览(47)
  • vue项目预览pdf功能(解决动态文字无法显示的问题)

    最近,因为公司项目需要预览pdf的功能,开始的时候找了市面上的一些pdf插件,都能用,但是,后面因为pdf变成了需要根据内容进行变化的,然后,就出现了需要动态生成的文字不显示了。换了好多好多的插件,都无法显示,直接无语了。 (pdf-vue3,pdf.js,vue3-pdfjs, vue - pdf -

    2024年02月12日
    浏览(30)
  • Element Ui中图片预览功能,点击当前图片显示当前图片。

    #应用场景# 1.页面显示出现多张图片时,需要点击查看预览 2.需要点击当前图片就显示当前图片,点击下一张上一张功能不受影响 #实现思路# 1.使用Element Ui中的图片预览API previewSrcList,可以显示点击预览效果,但是无法做到实时根据当前点击的图片显示预览当前的图片 2.解决方

    2024年04月22日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包