前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包

这篇具有很好参考价值的文章主要介绍了前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包,前端,excel,html

1、location.href

//get请求
window.location.href = url;

2、location.href

//get请求和location.href类似
window.open(url);

3、a标签

//写法1
const download = (filename, url) => {
    let a = document.createElement('a'); 
    a.style = 'display: none'; // 创建一个隐藏的a标签
    a.download = filename;
    a.href = url;
    document.body.appendChild(a);
    a.click(); // 触发a标签的click事件
    document.body.removeChild(a);
}

4、请求后端的方式

axios({
  method: 'post',
  headers: {
    'Content-Type': 'application/json; charset=utf-8'
  },
  url: '/robot/strategyManagement/analysisExcel',
  responseType: 'blob',
  headers: { //如果需要权限下载的话,加在这里
        Authorization: '123456'
    }
  data: JSON.stringify(params),
}).then(function(res){
   var content = res.headers['content-disposition'];
   var name = content && content.split(';')[1].split('filename=')[1];
   var fileName = decodeURIComponent(name)
   downloadFile(res.data,fileName)
})

5、文件下载的方式

downloadFile:function(data,fileName){
    // data为blob格式
    var blob = new Blob([data]);
    var downloadElement = document.createElement('a');
    var href = window.URL.createObjectURL(blob);
    downloadElement.href = href;
    downloadElement.download = fileName;
    document.body.appendChild(downloadElement);
    downloadElement.click();
    document.body.removeChild(downloadElement);
    window.URL.revokeObjectURL(href);
}

6、Blob和Base64

function downloadFile(res, Filename) {
  // res为接口返回数据,在请求接口的时候可进行鉴权
  if (!res) return;
  // IE及IE内核浏览器
  if ("msSaveOrOpenBlob" in navigator) {
    navigator.msSaveOrOpenBlob(res, name);
    return;
  }
  const url = URL.createObjectURL(new Blob([res]));
  //  const fileReader = new FileReader();  使用 Base64 编码生成
  // fileReader.readAsDataURL(res);
  // fileReader.onload = function() { ...此处逻辑和下面创建a标签并释放代码一致,可从fileReader.result获取href值... }
  const a = document.createElement("a");
  a.style.display = "none";
  a.href = url;
  a.download = Filename;
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
  URL.revokeObjectURL(url); // 释放blob对象
}

7、下载附件方法(excel,zip,html,markdown)

/**
 * @param data 数据
 * @param fileName 文件名称
 * @param type 导出文件类型
 */
export const download = (data: Blob, fileName: string, type: string) => {
  // 创建 blob
  const blob = new Blob([data], { type: mineType[type] })
  // 创建 href 超链接,点击进行下载
  window.URL = window.URL || window.webkitURL
  const href = URL.createObjectURL(blob)
  const downA = document.createElement('a')
  downA.href = href
  downA.download = fileName
  downA.click()
  // 销毁超连接
  window.URL.revokeObjectURL(href)
}

export const mineType = {
  excel: 'application/vnd.ms-excel', // 下载 Excel
  word: 'application/msword', // 下载 Word
  zip: 'application/zip', // 下载 Zip
  html: 'text/html', // 下载 Html
  markdown: 'text/markdown', // 下载 Markdown
}

使用

download(res, '导出模板.docx', 'word')

8、封装下载函数

export const download = (res, type, filename) => {
  // 创建blob对象,解析流数据
  const blob = new Blob([res], {
    // 设置返回的文件类型
    // type: 'application/pdf;charset=UTF-8' 表示下载文档为pdf,如果是word则设置为msword,excel为excel
    type: type
  })
  // 这里就是创建一个a标签,等下用来模拟点击事件
  const a = document.createElement('a')
  // 兼容webkix浏览器,处理webkit浏览器中href自动添加blob前缀,默认在浏览器打开而不是下载
  const URL = window.URL || window.webkitURL
  // 根据解析后的blob对象创建URL 对象
  const herf = URL.createObjectURL(blob)
  // 下载链接
  a.href = herf
  // 下载文件名,如果后端没有返回,可以自己写a.download = '文件.pdf'
  a.download = filename
  document.body.appendChild(a)
  // 点击a标签,进行下载 
  a.click()
  // 收尾工作,在内存中移除URL 对象
  document.body.removeChild(a)
  window.URL.revokeObjectURL(herf)
}

9、导出 zip 压缩包相关方法(流方式)

后端的设置 Content-Type: application/octet-stream(下载用的流)

 // 下载zip方法
    //zip格式文件下载
    zipdwonUpload(data) {
      console.log("干部任免表传递的数据", data);
      let ids = data.ids;
      console.log("ids集合数据", ids);
      // 导出干部任免表接口
      this.$axios
        .post(`personnel/exportAppointmentAndDismissal`, ids, {
          responseType: "blob",
        })
        .then((res) => {
          // res
          let blob = res;
          let that = this;
          //通过FileReader读取数据,是一种异步文件读取机制
          let reader = new FileReader();
          //以下这两种方式我都可以解析出来,因为Blob对象的数据可以按文本或二进制的格式进行读取
          // reader.readAsBinaryString(blob, 'utf8');
          reader.readAsText(blob, "utf8");
          // eadAsText(file, encoding);以纯文本的方式读取,读取到的文本保存在result属性中。第二个参数代表编码格式

          reader.onload = function (result) {
            //onload在成功加载后就会触发
            console.log("result信息", result);
            console.log(
              "isJson判断是否为json格式",
              that.isJSON(result.target.result)
            );
            if (that.isJSON(result.target.result)) {
              that.$message.warning(JSON.parse(result.target.result).msg);
              // loading效果
              // that.loadingBut = false;
            } else {
              console.log("下载zip数据", res);
              // that.downloadFile(res);
            }
          };
        })
        .catch((error) => {
          console.log(error);
          // 打印错误
        })
        .finally(() => {
          // 导出按钮loading效果
          this.isDownloadingFile = false;
        });
    },

使用导出 zip

    // 导出zip
    downloadFile(res) {
      // res 下载转blob二进制或文本数据
      let blob = new Blob([res], { type: "application/zip" });
      console.log("导出的blob", blob);
      if (window.navigator.msSaveOrOpenBlob) {
        // msSaveOrOpenBlob 提供保存和打开按钮
        navigator.msSaveOrOpenBlob(blob, "xxx.zip");
        // navigator.msSaveOrOpenBlob(blob, "xxx.zip");
        return;
      }
      let url = window.URL.createObjectURL(blob);
      const link = document.createElement("a"); // 创建a标签
      link.href = url;
      link.download = `干部任免压缩包`; // 重命名文件
      link.click();
      URL.revokeObjectURL(url); // 释放内存
      // this.loadingBut = false; //loading效果
    },

总结

如果这篇【文章】有帮助到你💖,希望可以给我点个赞👍,创作不易,如果有对前端或者对python感兴趣的朋友,请多多关注💖💖💖,咱们一起探讨和努力!!!
👨‍🔧 个人主页 : 前端初见文章来源地址https://www.toymoban.com/news/detail-630235.html

到了这里,关于前端下载文化部几种方法(excel,zip,html,markdown、图片等等)和导出 zip 压缩包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端下载文件的几种方式使用Blob下载文件

    前端下载文件的几种方式 使用Blob下载文件 在前端下载文件是个很通用的需求,一般后端会提供下载的方式有两种: 1.直接返回文件的 网络地址 (一般用在静态文件上,比如图片以及各种音视频资源等) 2.返回 文件流 (一般用在动态文件上,比如根据前端选择,导出不同的

    2024年02月05日
    浏览(32)
  • android gradle-8.0-bin-zip下载失败、下载很慢的解决方法

    如果你的studio下载gradle很慢或下载失败,你可以去 gradle官网 自己下载,然后按照下面的方法导入即可。 创建一个项目后,先看Settings里的gradle本地存放路径。默认是在C盘自动创建一个“.gradle”的文件夹,可以改到其他盘,但不建议,可能会导致AS下载文件失败或奇怪的问题

    2024年02月04日
    浏览(49)
  • 前端下载文件(Blob)的几种方式使用Blob下载文件

    在前端下载文件是个很通用的需求,一般后端会提供下载的方式有两种: 1.直接返回文件的网络地址(一般用在静态文件上,比如图片以及各种音视频资源等) 2.返回文件流(一般用在动态文件上,比如根据前端选择,导出不同的统计结果 excel 等) 第一种方式比较简单,但

    2024年02月07日
    浏览(39)
  • 记录--盘点前端实现文件下载的几种方式

    前端涉及到的文件下载还是很多应用场景的,那么前端文件下载有多少种方式呢?每种方式有什么优缺点呢?下面就来一一介绍。 通过 a 标签的 download 属性来实现文件下载,这种方式是最简单的,也是我们比较常用的方式,先来看示例代码: 就上面的这个示例,我们点击下

    2024年02月13日
    浏览(36)
  • vue实现excel数据下载,后端提供的list由前端转excel并下载

    前言,因为项目需求需要,我们需要把后端传来的list转成excel模板,并且下载下来) 之前有用的插件,但是会有少0的情况,如下  所以采用另一个项目用过的方法,最终完美实现效果,如下:  1,首先我们来看下后端提供的数据结构 2,具体前端代码如下 封装的组件,需要的同学直接copy就行

    2024年02月16日
    浏览(34)
  • 后端:使用easyExcel实现解析Excel文件读取数据。前端:Excel模板下载、前端上传文件

            本篇是EasyExcel快速入门知识,讲解如何读取Excel文件,对Excel中错误信息如空字符、必填项为空、表格格式校验做到处理 ,并给出了实际项目中示例代码;为什么要使用easyexcel;原因是相比于poi,easyexcel更加轻量级,读取写入API方便,并且在工作中占用内存较小;

    2024年02月05日
    浏览(48)
  • 前端几种下载文件的方式(url方式和文件流方式)

    前端实现下载功能是依赖于浏览器特性,而非JS特性 前端如何实现文件下载,防止浏览器自动打开可预览文件 https://blog.csdn.net/weixin_46074961/article/details/105677732 1.location.href 下载文件–window-location-href 对于浏览器不能打开的文件(例如:.rar .doc等)是可以实现文件下载的,但是对于浏

    2024年02月06日
    浏览(24)
  • Arduino串口数据保存到excel中的几种方法

    参见:如何利用python传输串口数据到excel? [http://www.kaotop.com/it/23641.html] 优点:可以自己设置代码格式等 不足:太麻烦,不够快捷 淘宝几十块钱买一个,很好用的串口助手,还可以数据可视化。 不足:需要手动保存窗口内的串口内容。 这是微软自带的一个excel加载项 参见:什

    2024年01月17日
    浏览(74)
  • #vue3 实现前端下载excel文件模板功能

    一、需求: 前端无需通过后端接口,即可实现模板下载功能。 通过构造一个 JSON 对象,使用前端常用的 第三方库 xlsx ,可以直接将该 JSON 对象转换成 Excel 文件,让用户下载模板 二、效果: 三、源码如下:

    2024年01月19日
    浏览(42)
  • vue纯前端实现下载excel文件,本地和测试环境都可正常下载

    vue2纯前端实现下载excel文件,本地和测试环境都可正常下载。 1、把后端给的excel文件放到本地项目文件夹中,位置如图所示: 2、在需要展示下载功能的页面中引入该excel文件,如图所示: 3、使用a链接,href绑定引入的excel文件路径,并添加download属性,download属性值就是下载

    2024年02月13日
    浏览(33)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包