专栏首页西安-晁州纯js实现文件下载并重命名功能

纯js实现文件下载并重命名功能

直接记录代码:

/**
 * 获取 blob
 * @param  {String} url 目标文件地址
 * @return {cb} 
 */
function getBlob(url,cb) {
        var xhr = new XMLHttpRequest();
        xhr.open('GET', url, true);
        xhr.responseType = 'blob';
        xhr.onload = function() {
                if (xhr.status === 200) {
                    cb(xhr.response);
                }
        };
        xhr.send();
}

/**
 * 保存
 * @param  {Blob} blob     
 * @param  {String} filename 想要保存的文件名称
 */
function saveAs(blob, filename) {
    if (window.navigator.msSaveOrOpenBlob) {
            navigator.msSaveBlob(blob, filename);
    } else {
            var link = document.createElement('a');
            var body = document.querySelector('body');

            link.href = window.URL.createObjectURL(blob);
            link.download = filename;

            // fix Firefox
            link.style.display = 'none';
            body.appendChild(link);
            
            link.click();
            body.removeChild(link);

            window.URL.revokeObjectURL(link.href);
    };
}

/**
 * 下载
 * @param  {String} url 目标文件地址
 * @param  {String} filename 想要保存的文件名称
 */
function download(url, filename) {
    getBlob(url, function(blob) {
        saveAs(blob, filename);
    });
};

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • nodejs图片上传

    node中图片上传的中间键很多,比如formidable等,这里我们使用nodejs中的fs来实现文件上传处理: 1、安装中间键connect-multipar...

    用户1141560
  • 解决vuejs应用在nginx非根目录下部署时访问404的问题

    用户1141560
  • spring-boot配置热更新

    spring boot使用的时候会遇到不断重启启动类的情况,热更新可以免去手动重启的烦恼,spring boot应用配置热更新主要有两种方式: 1、使用spri...

    用户1141560
  • reactor-netty中TcpClient的newHandler过程

    本文主要研究一下reactor-netty中TcpClient的newHandler过程

    codecraft
  • linux 远程ssh免密登录

    我们平时开发、运维操作linux过程中经常需要实现将远程文件拷贝到本地或者本地文件拷贝到远程;执行远程命令等操作;这个时候建立ssh免密登录应该是一个比较好的选...

    乔达摩@嘿
  • flowable实现多实例节点的自由跳转(二)

    之前写过一个关于flowable实现多实例节点的自由跳转的文章,但后面研究发现,原来flowable已经提供了前后跳转的方法,只是我不知道而已 方法如下:

    星痕
  • 胡新辰:LSTM学习教程、资料以及最新进展介绍总结

    用户1737318
  • python学习-xlsxwriter模

    Xlsx是python用来构造xlsx文件的模块,可以向excel2007+中写text,numbers,formulas 公式以及hyperlinks超链接。

    py3study
  • MQ消息丢了怎么破?在线等.....

    在我们从事技术的工作中,离不开中间件,mq就是常见的中间件之一,丢消息可能是我们经常遇到的,为啥会丢?丢了怎么破?测试能不能复现,很多同学知道一些似是而非的策略...

    cctester
  • winform和WPF的那点事~

      WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架,属于.NET Framework 3...

    用户7053485

扫码关注云+社区

领取腾讯云代金券