JavaScript 实现文件下载并重命名

第一种是HTML官网中的方法<a href="/images/liang.jpg" download="文件名称">HTML5 中 a 标签提供了一个 filename 属性,可以下载成指定的 download 属性名称这种同源访问是没有问题的,但一跨域就不行了,试了其它方法,不是报跨域错误,就是在当前页面打开文件,体验相当不好。

第二种方案比较通用/**
 * 获取 blob
 * url 目标文件地址
 */
function getBlob(url) {
    return new Promise(resolve => {
        const xhr = new XMLHttpRequest();

        xhr.open(‘GET‘, url, true);
        xhr.responseType = ‘blob‘;
        xhr.onload = () => {
            if (xhr.status === 200) {
                resolve(xhr.response);
            }
        };

        xhr.send();
    });
}

/**
 * 保存 blob
 * filename 想要保存的文件名称
 */
function saveAs(blob, filename) {
    if (window.navigator.msSaveOrOpenBlob) {
        navigator.msSaveBlob(blob, filename);
    } else {
        const link = document.createElement(‘a‘);
        const 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).then(blob => {
        saveAs(blob, filename);
    });
}
 

原文地址:https://www.cnblogs.com/liang715200/p/12024320.html

时间: 2025-01-06 14:48:54

JavaScript 实现文件下载并重命名的相关文章

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

纯js实现文件下载并重命名功能 来源: https://www.cnblogs.com/vipzhou/p/10700130.html /** * 获取 blob * @param {String} url 目标文件地址 * @return {cb} */ function getBlob(url,cb) { var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.responseType = 'blob'; xhr.onl

JavaScript多文件下载

对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链接,用户需要右键点击链接,然后选择“另存为”,这个过程虽说不麻烦,但还是需要两步操作,倘若用户想保存页面中的多个链接文件,就得重复操作很多次,最常见的就是英语听力网站上的音频下载,手都要点麻! 本文的目的是介绍如何利用 javascript 进行多文件的下载,也就是当用户点击某个链接或者按钮的时候,

提取文件到指定目录,并重命名

最近做视频,各个目录里都有图片,无法统一导入到视频编辑软件 写了个小程序,可以将指定各级目录下的文件拷贝到指定目录,并以文件夹名字加数字命名 如果文件夹上都有日期,可以选择将日期放前面,做视频时好排序. import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; i

使用for循环创建在指定目录下批量创建文件并重命名所有文件

要求1: 使用for循环在/root/scripts/practice/q1/oldboy 目录下创建十个文件.名称依次为: oldboy-1, oldboy-2, ..... oldboy-10. 脚本实现: #!/bin/bash #Question1 shopt -s expand_aliases alias ll="ls -l" cd /root/scripts/practice/q1 #首先判断目录是否存在,不存在则创建目录 if [ ! -e oldboy ] then  

scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名

对拷文件夹 (包括文件夹本身) scp -r   /home/wwwroot/www/charts/util [email protected]:/home/wwwroot/limesurvey_back/scp 对拷文件夹下所有文件 (不包括文件夹本身) scp   /home/wwwroot/www/charts/util/* [email protected]:/home/wwwroot/limesurvey_back/scp 对拷文件并重命名 scp   /home/wwwroot/ww

JavaScript知识点总结(命名规范,变量的作用域)

命名规范 有人说JavaScript的宽容性是这个语言最糟糕的方面之一.比如说想把2个数字加在一起,JavaScript会把其中一个数字解析成字符串,那么就会得到一个奇怪的字符串,而不是2个数字的和. 说到JavaScript的数据类型的时候,环境就是一切.本文要讲述3种数据类型:字符串类型,布尔型,数字型. JavaScript的变量和其他语言的变量很相似.它们用来保存值,而这些保存了的值,可以在代码的不同的地方被访问到.在其所使用的作用域范围内,每个变量的标识符是一样的.JavaScript

jQuery解决引用多个JavaScript库引起的$命名冲突的问题

在某些情况下,我们可能会在一个页面中使用多个JavaScript库,由于多个库中都是用$标识符,因此我们需要一种解决该命名冲突的方法,jQuery的noConflict()方法很好的解决了这个问题.jQuery调用该方法会把对$标识符的控制权限让渡给其他库使用. 参考示例如下: <script src="prototype.js"></script> <!-- 引用的库1 --> <script src="jquery.js"

JavaScript中标识符的命名

JavaScript中的标识符的命名有以下规则: 由字母.数字.$._组成 以字母.$._开头 不可以使用保留字!!! 要有意义!!!!!!! 标识符的命名规范: 1.驼峰命名法 除标识符的第一个单词外,其余单词的首字母大写,例如:trueName 2.蛇型命名法 单词之间用_隔开,例如:true_name (注:大多数情况下,以1~2个下划线开始的标识符,代表特殊变量或内部变量,我们在自己定义的时候,尽量避免使用以下划线开头的变量) (粗浅的见解,望批评指正) 原文地址:https://www

使用数据泵导入并重命名表名

--查询数据泵使用的目录 SQL> select * from dba_directories; --导出数据库使用的导出目录 EXPDP_DUMP /u02/expdp_dump --导出scott下表T_A的命令 expdp system/oracle directory=expdp_dump dumpfile=expdp_T_A.dmp logfile=expdp_T_A.log tables=scott.T_A --导出操作记录 [[email protected] ~]$ expdp