码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Blob 对象实现文件预览下载


    Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。

    Blob 表示的不一定是 JavaScript 原生格式的数据。File 接口基于 Blob,继承了 blob 的功能并将其扩展以支持用户系统上的文件。

    官方关于blob的介绍 

    附件下载封装

    1. //附件下载
    2. export const fileDownload = file => {
    3. getDownload(allUrl.normal.downloadFile, { fileCode: file.fileCode }).then(res => {
    4. if (res.status === 200) {
    5. let fileName = res.headers["content-disposition"].split(";")[1].split("filename=")[1];
    6. // 文件名称解码
    7. let name = decodeURI(fileName);
    8. const blob = new Blob([res.data]);
    9. // ie兼容
    10. if (window.navigator.msSaveOrOpenBlob) {
    11. //兼容 IE & EDGE
    12. navigator.msSaveBlob(blob, name);
    13. }
    14. // 创建一个临时的URL对象
    15. let url = window.URL.createObjectURL(blob);
    16. // 创建一个标签
    17. let link = document.createElement("a");
    18. link.href = url;
    19. link.setAttribute("download", name); // 设置下载文件的文件名,注意要包含正确的扩展名
    20. // 模拟点击下载链接
    21. document.body.appendChild(link);
    22. link.click();
    23. // 清理临时URL对象
    24. document.body.removeChild(link);
    25. window.URL.revokeObjectURL(url);
    26. }
    27. });
    28. };

    文件预览 (wps)

    1. // wps文件预览
    2. export const preview = file => {
    3. get(allUrl.normal.previewFile, { fileCode: file.fileCode }).then(res => {
    4. if (!res.success || res.code !== 200) {
    5. message.error(res.msg);
    6. } else {
    7. // 根据返回地址跳转
    8. // 创建一个a标签,a标签的href设置为此外链,ref设置为noreferrer,然后插入到body里,执行a标签的点击事件
    9. let a = document.createElement("a");
    10. a.setAttribute("href", res.data);
    11. // 打开新页面
    12. a.setAttribute("target", "_blank");
    13. a.setAttribute("id", "ftm-link");
    14. // 必须配置noreferrer才能直接打开
    15. a.setAttribute("rel", "noreferrer");
    16. document.body.appendChild(a);
    17. a.click();
    18. const aNode = document.getElementById("ftm-link");
    19. if (aNode) {
    20. document.body.removeChild(aNode);
    21. }
    22. }
    23. });
    24. };

    get() 方法和 getDownLoad() 是基于axios 的请求 ,查看 。

  • 相关阅读:
    AWS无服务器 应用程序开发—第十四章 实战1
    springbootvue电影购票网站
    解析java中的String类中的方法(一)
    [华为北向网管NCE开发教程(6)消息订阅
    查看当前cmake版本支持哪些版本的Visual Studio
    NumPy数值计算基础实训
    GBase XDM API 错误处理调用(上)
    第5章 uin-app本地主机数据跨域(Cors)数据交互实现
    想干程序员这行的,真的很需要这个,T0 级别的《面试资料全集》--Java 问题收录及答案详解,持续更新中...
    代理模式(CGLIB和JDK)
  • 原文地址:https://blog.csdn.net/qq_27401917/article/details/134267890
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号