JavaScript 如何做下载

你有没有遇到过这种情况:在网页上看到一张好看的壁纸,想直接保存到电脑里,却发现右键没有“图片另存为”的选项?或者想把浏览器里的一段表格数据保存成Excel文件,却找不到下载按钮?这时候,前端开发者常用的JavaScript,就能帮我们解决这类问题。

下面就用几个生活化的例子,讲清楚JS做下载的核心方法,不用复杂的代码,普通人也能看懂。

JavaScript 如何做下载

最简单的下载:下载已有的文件

先从最常见的场景说起,比如想下载一张存在服务器上的图片。举个例子,你在某旅游网站看到一张大海的图片,图片地址是https://example.com/sea.jpg,怎么让用户点按钮就能下载?

很多人不知道,HTML里的标签有个隐藏的download属性,专门用来做下载链接。不用写JS,只要给链接加个这个属性,浏览器就会自动触发下载,而不是跳转到图片页面。比如:

`html

点我下载壁纸

`

这里的download后面可以加文件名,方便用户保存。如果没有这个属性,浏览器会直接打开图片,没法下载。这是JS做下载的基础——有时候甚至不用写JS,用原生HTML就能搞定。

进阶玩法:下载自定义内容

有时候我们要下载的不是现成的文件,而是动态生成的内容,比如把你刚写的一段日记保存成TXT,或者把网页上的一段表格数据保存成CSV。这时候就得用JS来“造”一个临时文件,再触发下载。

举个例子,你在网页上写了一段心里话,想保存成文本文件。用JS可以这么做:

  • 先把你写的内容转成浏览器能识别的文件格式,比如TXT就是普通的字符串;

用`Blob`(可以理解成“装文件的容器”)把内容包起来;

代码大概是这样:

`javascript

function downloadMyText() {

// 你要下载的内容

const content = "今天去公园散步,看到小猫追蝴蝶,好开心!";

// 把内容转成Blob

const blob = new Blob([content], { type: "text/plain" });

// 造临时链接

const url = URL.createObjectURL(blob);

const a = document.createElement("a");

a.href = url;

a.download = "我的日记.txt";

// 触发下载

a.click();

// 用完释放临时地址

URL.revokeObjectURL(url);

}

`

用户点“保存日记”按钮,就会自动下载这个TXT文件,不用跳转到新页面。这个方法还能用来下载Canvas画的图,比如你用JS做了一张手绘的图,把Canvas转成Blob就能下载成图片。

注意事项:这些坑要避开

虽然JS做下载很简单,但有几个常见的小问题要注意:

总的来说,JS做下载核心就两个场景:要么用原生标签的download属性下载现成文件,要么用JS生成Blob造临时文件下载自定义内容。不管是下载壁纸、日记还是手绘的图,掌握这两个方法就够用了。

上一篇 Swift:高效安全的iOS开发编程语言核心特性与应用场景科普