JavaScript实现文件下载的超简单两种方式分享
更新时间:2023年12月08日 16:59:26 作者:张张打怪兽
这篇文章主要为大家详细介绍了JavaScript实现文件下载的超简单两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
文件下载一般有几种情况
- 1.url
- 2.文件流
file-saver库实现文件下载
// 流方式
import { saveAs } from "file-saver";
//content 文件流,xxx.pdf 文件名称
saveAs(content, `xxx.pdf`);
// url方式
import { saveAs } from "file-saver";
const url = 'xxx.jpg'
fetch(url)
.then((response) => response.blob())
.then((blob) => {
saveAs(blob, `xxx.pdf`);
})手写方式
url方式
原理:创建一个a标签,传入url点一下a标签就可以下载了
流方式
原理:将流转换成缓存的url,再创建一个a标签传入url,点一下就实现了
【工具类】文件下载类
//utils/downloadFile
class DownloadFile {
/**
*
* @param {*} file 文件流
* @returns
*/
getObjectURL(file) {
let url = null;
if (window.createObjectURL !== undefined) {
// basic
url = window.createObjectURL(file);
} else if (window.webkitURL !== undefined) {
// webkit or chrome
try {
url = window.URL.createObjectURL(file);
} catch (error) {
console.log(error);
}
} else if (window.URL !== undefined) {
// mozilla(firefox)
try {
url = window.URL.createObjectURL(file);
} catch (error) {
console.log(error);
}
}
return url;
}
/**
* 文件点击下载
* @param {*} blob 文件流
* @param {*} fileName 文件名
*/
downloadFile(blob, fileName) {
let eleLink = document.createElement("a");
eleLink.download = fileName;
eleLink.style.display = "none";
// 字符内容转变成blob地址
eleLink.href = this.getObjectURL(blob);
// 自动触发点击
document.body.appendChild(eleLink);
eleLink.click();
// 然后移除
document.body.removeChild(eleLink);
}
/**
* 获取文件名后缀
* @param {*} filename 文件名
* @returns
*/
getFileFix(filename) {
let fix = filename.substring(filename.lastIndexOf("\.") + 1).toLocaleLowerCase();
return fix;
}
/**
* 是否可预览
* @param {*} filename 文件名
* @returns true可,false不可
*/
isPreview(filename) {
let fix = this.getFileFix(filename)
switch (fix) {
case "jpg":
case "jpge":
case "png":
case "pdf":
case "mp4":
case "txt": {
return true
}
default: {
return false
}
}
}
/**
* 预览文件
* @param {*} blob 文件流
*/
preview(blob) {
return this.getObjectURL(blob);
}
/**
* 是服务器流 false 本地流true
* @param {*} blob 文件流
*/
static isLocalFile(blob) {
return blob.raw ? true : false
}
}
export default DownloadFile下载
import DownloadFile from "@/utils/DownloadFile"; let d = new DownloadFile(); // content 文件流【blob】 d.downloadFile(content, "优惠码.zip");
到此这篇关于JavaScript实现文件下载的超简单两种方式分享的文章就介绍到这了,更多相关JavaScript文件下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
本文给大家简单总结了下JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法,非常的简单实用,有需要的小伙伴可以参考下2016-06-06
JS动态添加与删除select中的Option对象(示例代码)
本篇文章主要介绍了JS动态添加与删除select中的Option对象示例代码。需要的朋友可以过来参考下,希望对大家有所帮助2013-12-12
JavaScript中Hoisting详解 (变量提升与函数声明提升)
函数声明和变量声明总是被JavaScript解释器隐式地提升(hoist)到包含他们的作用域的最顶端。下面这篇文章主要给大家介绍了关于JavaScript中Hoisting(变量提升与函数声明提升)的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。2017-08-08


最新评论