首页 > 其他分享 >js 实现文件下载并重命名

js 实现文件下载并重命名

时间:2023-07-06 13:45:38浏览次数:45  
标签:body url 并重 filename xhr link blob js 下载

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);
    });
}

 

[转]:JavaScript 实现文件下载并重命名

 

标签:body,url,并重,filename,xhr,link,blob,js,下载
From: https://www.cnblogs.com/ToBeBest/p/17531812.html

相关文章

  • md5.js
    直接引入md5.js需要注意:(不然加密的md5不会变)md5(blob.byteLength)import{md5}from"@/utils/md5.js";/* *JavaScriptMD51.0.1 *https://github.com/blueimp/JavaScript-MD5 * *Copyright2011,SebastianTschan *https://blueimp.net * *License......
  • macOS Sonoma 14 beta 3 (23A5286g) ISO、IPSW、PKG 发布下载
    macOSSonoma14beta3(23A5286g)ISO、IPSW、PKG下载,7月5日(北京时间今日凌晨)已发布本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。请访问原文链......
  • macOS Sonoma 14 beta 3 (23A5286g) Boot ISO 原版可引导镜像下载
    macOSSonoma14beta3(23A5286g)BootISO原版可引导镜像下载,7月5日(北京时间今日凌晨)已发布本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。请访......
  • package.json指南
    一、属性name定义项目的名称,不能以"."和"_"开头,不能包含大写字母version定义项目的版本号,格式为:大版本号.次版本号.修订号description项目的描述二、配置dependencies生产环境的依赖包如果不使用脱字符(^),安装的版本号固定;如果使用,则能安装当前大版本的最新版本,在......
  • 用vue-contextmenujs进行右键菜单的操作
    1.安装依赖npminstallvue-contextmenujs2.引用在main.js中importContextmenufrom"vue-contextmenujs"Vue.use(Contextmenu);3.使用示例我是在elementui表格中使用的<template>....<el-table.....    @row-contextmenu="onContextmenu"&......
  • nvm安装node.js总结
    nvm安装node.js总结什么是nvm?nvm(Node.jsversionmanager)是一个命令行应用,可以协助您快速地更新、安装、使用、卸载本机的全局node.js版本。为什么要用nvm?有时候,我们可能同时在进行多个项目开发,而多个项目所使用的node版本又是不一样的,或者是要用最新的node版本进行......
  • 【13.0】前端基础JavaScript之JS事件案例
    【13.0】前端基础JavaScript之JS事件案例【一】开关灯示例<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>Title</title><style>.c1{height:......
  • 使用html2canvas生成网页截图并下载
    1.安装依赖npminstallhtml2canvas--save2.引入依赖importhtml2canvasfrom"html2canvas";3.使用示例<template><div><a@click="toImage()">下载</a><divref="imageTofile"> 要截屏的控件内容</div>&......
  • vue实现接受后台文件流转文件并下载
    接受到的文件流是这样的 1,首先在请求时加上  responseType:'blob'request({url:"url",method:"get",responseType:'blob',//加上这一行params:params})  2,在获取到返回来的文件流后进行处理 //传的参数为图片downloadImage({file_......
  • EasyExcel实现excel文件重复多次写入和导出&下载文件
    一、EasyExcel实现excel文件的导出官方文档导入依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>......