迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

使用 JavaScript 下载文件

作者:迹忆客 最近更新:2023/03/11 浏览次数:

在本文中,我们将学习如何使用 JavaScript 下载文件。自动下载文件可帮助我们使用 JavaScript 函数直接从 URL 检索文件,而无需联系任何服务器。我们将使用自定义的编写函数并使用 HTML 5 的下载属性来实现此目的。

当用户单击超链接时,HTML 5 中的 download 属性用于下载文件。它与锚标签-<a><area> 一起使用。我们需要设置 href 属性,以指定文件的来源。download 属性的值确定下载文件的名称。如果删除此值,则下载的文件名将与原始文件名相同。

<!DOCTYPE html> 
<html> 
<head>
	<title>How to Download files Using JavaScript </title>
</head>
   <body>     
         <a href="apple.png" download="apple">
         <button type="button">Download</button> 
         </a> 
   </body> 
</html> 

在上面的代码中,我们使用 download 属性下载图像 apple.png。我们首先创建包含图像地址的锚标签,然后向其添加 download 属性。然后,我们还创建了一个下载按钮,以方便下载文件。

这种方法将动态创建文本数据,然后使用 JavaScript 创建文本文件然后下载。

附加事件侦听器,以查找单击下载按钮的过程。使用文本区域中的文本和文本文件的文件名作为参数来调用下载功能。

<!DOCTYPE html>
<html>

<head>
      <title>
            How to Download files Using JavaScript
      </title>
</head>

<body>

      <textarea id="text">DelftStack</textarea>
      <br />
      <input type="button" id="btn" value="Download" />
      <script>
            function download(filename, textInput) {

                  var element = document.createElement('a');
                  element.setAttribute('href','data:text/plain;charset=utf-8, ' + encodeURIComponent(textInput));
                  element.setAttribute('download', filename);
                  document.body.appendChild(element);
                  element.click();
                  //document.body.removeChild(element);
            }
            document.getElementById("btn")
                  .addEventListener("click", function () {
                        var text = document.getElementById("text").value;
                        var filename = "output.txt";
                        download(filename, text);
                  }, false);
      </script>
</body>

</html>

在这种方法中,我们将使用 Axios 库下载文件。在继续介绍该方法的详细信息之前,让我们了解什么是 Blob,这是用于使用 Axios 下载文件的数据类型。

Blob 代表 Binary Large Object,是一种可以存储二进制数据的数据类型。它表示程序、代码片段、多媒体对象之类的数据,以及不支持 JavaScript 本机格式的其他内容。

<!DOCTYPE html>
<html>

<head>
      <title>How to download files using JavaScript</title>
</head>

<body>
      <button onclick="download()">
            Download Image
      </button>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/0.19.2/axios.min.js">
      </script>
      <script>
            function download() {
                  axios({
                        url: 'https://source.unsplash.com/random/500x500',
                        method: 'GET',
                        responseType: 'blob'
                  })
                        .then((response) => {
                              const url = window.URL
                                    .createObjectURL(new Blob([response.data]));
                              const link = document.createElement('a');
                              link.href = url;
                              link.setAttribute('download', 'image.jpg');
                              document.body.appendChild(link);
                              link.click();
                              document.body.removeChild(link);
                        })
            }

      </script>
</body>

</html>

在这里,我们从一个网站获得随机的图片,使用 Axios 来请求这些图片的 blob 形式,然后使用锚标签的 download 属性下载它们。与以前的方法一样,此方法不限于用户输入的纯文本。我们可以从 API 请求任何种类的数据,然后使用这种方法将数据保存在计算机内部。

除使用 Axios 库的方法外,所有主流浏览器均支持上述所有方法。Internet Explorer 仍然不支持本机 ES6 承诺,而 Axios 严重依赖它们。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Angular 中上传文件

发布时间:2023/04/14 浏览次数:71 分类:Angular

本教程演示了如何在 Angular 中上传任何文件。我们还将介绍如何在文件上传时显示进度条,并在上传完成时显示文件上传完成消息。

Angular 2 中的复选框双向数据绑定

发布时间:2023/04/14 浏览次数:139 分类:Angular

本教程演示了如何一键标记两个复选框。这篇有 Angular 的文章将着眼于执行复选框双向数据绑定的不同方法。

在 AngularJs 中加载 spinner

发布时间:2023/04/14 浏览次数:107 分类:Angular

我们将介绍如何在请求加载时添加加载 spinner,并在 AngularJs 中加载数据时停止加载器。

在 Angular 中显示和隐藏

发布时间:2023/04/14 浏览次数:78 分类:Angular

本教程演示了 Angular 中的显示和隐藏。在开发商业应用程序时,我们需要根据用户角色或条件隐藏一些数据。我们必须根据该应用程序中的条件显示相同的数据。

在 Angular 中下载文件

发布时间:2023/04/14 浏览次数:104 分类:Angular

本教程演示了如何在 angular 中下载文件。我们将介绍如何通过单击按钮在 Angular 中下载文件并显示一个示例。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便