【JavaScript】多种实现文件下载的工具类

news/2024/7/10 22:38:00 标签: javascript, ajax, jquery

【JavaScript】多种实现文件下载的工具类

  • 方法一
  • 方法二
  • 方法三
  • 整体调用代码
  • 异常处理

示例以下载txt文件为例,代码已封装上传,可直接下载资源在服务器中使用。如有异常,可查看“异常处理”小节或评论区指出。

方法一

在html中,可以采用<a href="./js.txt" download>下载</a>实现文件的下载,据此,在JavaScript对其进行实现,封装后函数如下:

javascript">function aHtml(url) {//<a href="./js.txt" download>下载</a>
            let a = document.createElement('a');
            a.href = url;
            a.click();
        }
  • url:传入的下载地址

方法二

javascript">function windowOpen(url) {
            window.open(url);
        }

方法三

javascript">function windowLocationHref(url) {
            window.location.href = url;
        }

整体调用代码

该部分代码涉及以上所有方法,以及相关的调用。其中提及jquery$("#div1").load("http://127.0.0.1:81/testJS/js.txt");使用,由于文件直接加载到了页面上,无法以txt文件形式进行直接下载保存,因此并没有在所提及的方法中展示,如呈现效果符合实际需求,也可以根据需要进行使用。

图中乱码为该txt文件为加密文件导致,不涉及代码问题

在这里插入图片描述

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <title>demo</title>
    <script>javascript">
        function aHtml(url) {//<a href="./js.txt" download>下载</a>
            let a = document.createElement('a');
            a.href = url;
            a.click();
        }
        function windowOpen(url) {
            window.open(url);
        }
        function windowLocationHref(url) {
            window.location.href = url;
        }
        $(document).ready(function () {
            $("#btn").click(function () {
                $("#div1").load("http://127.0.0.1:81/testJS/js.txt");
            });
        });
    </script>
</head>

<body>
    <div id="div1">jQuery AJAX</div>
    <button onclick="javascript language-javascript">aHtml('http://127.0.0.1:81/testJS/js.txt')">aHtml</button>
    <button onclick="javascript language-javascript">windowOpen('http://127.0.0.1:81/testJS/js.txt')">windowOpen</button>
    <button onclick="javascript language-javascript">windowLocationHref('http://127.0.0.1:81/testJS/js.txt')">windowLocationHref</button>
    <button id="btn">jQuery</button>
</body>

</html>

异常处理

问题1:当html文件在本地打开时,会对txt文件进行预览打开,无法实现txt文件的下载。

答:需要将txt文件部署在服务器上才可以正常使用,否则只支持预览,点击demo中aHtml按钮效果如下图所示:
在这里插入图片描述
但要注意,此时右键“另存为”,文件类型选择下载的txt文件,同样能够实现文件的下载,只是效果不佳。

问题2:本地测试jQuery的load()方法时, 报错:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource。

答:CORS问题,需要将文件部署在服务器上才可以正常使用,具体讲解可查看【异常】 AJAX 跨域请求报:No ‘Access-Control-Allow-Origin‘ header is present on the requested resource。


http://www.niftyadmin.cn/n/5327853.html

相关文章

openssl3.2 - 官方demo学习 - mac - poly1305.c

文章目录 openssl3.2 - 官方demo学习 - mac - poly1305.c概述笔记END openssl3.2 - 官方demo学习 - mac - poly1305.c 概述 MAC算法为Poly1305, 加密算法为AES-128-ECB, 用key初始化加密算法 加密算法进行padding填充 对加密算法的key加密, 放入MAC_key后16字节, 将MAC_key的…

力扣刷题(无重复字符的最长子串)

3. 无重复字符的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是…

vue3-条件渲染

条件渲染 v-if v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回真值时才被渲染。 <h1 v-if"awesome">Vue is awesome!</h1>v-else 你也可以使用 v-else 为 v-if 添加一个“else 区块”。 <button click"awesome !awesom…

索引的数据结构(MySql高级)

索引的数据结构 为什么使用索引什么是索引索引的优缺点优点缺点 常见索引概念聚簇索引二级索引(辅助索引, 非聚簇索引)InnoDB的B树索引的注意事项 MyISAM 与 InnoDB 对比索引的代价 为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构&#xff0c;就好比一本教…

ChatGPT4.0 >ChatGPT 3.5 > 文心一言

ChatGPT和文心一言 前言 ChatGPT是一种基于自然语言处理的对话型人工智能模型&#xff0c;由OpenAI开发。它是使用了大规模的语料库进行无监督学习的结果&#xff0c;并且在生成自然流畅的文本方面表现出色。 ChatGPT可以用于各种对话任务&#xff0c;例如回答问题、提供建议…

【控制篇 / 分流】(7.4) ❀ 01. 对指定IP网段访问进行分流 ❀ FortiGate 防火墙

【简介】公司有两条宽带&#xff0c;一条ADSL拨号用来上网&#xff0c;一条移动SDWAN&#xff0c;已经连通总部内网服务器&#xff0c;领导要求&#xff0c;只有访问公司服务器IP时走移动SDWAN&#xff0c;其它访问都走ADSL拨号&#xff0c;如果你是管理员&#xff0c;你知道有…

不同整数的最少数目和单词直接最短距离

写是为了更好的思考&#xff0c;坚持写作&#xff0c;力争更好的思考。 今天分享两个关于“最小、最短”的算法题&#xff0c;废话少说&#xff0c;show me your code&#xff01; 一、不同整数的最少数目 给你一个整数数组arr和一个整数k。现需要从数组中恰好移除k个元素&…

numpy 筛选多段数据

目录 掩码方式 利用切片 掩码方式 range_to_remove list(range(77-1, 111-1)) list(range(122-1, 135-1))keep_mask np.ones(image0_cut.shape[0], dtypebool)keep_mask[range_to_remove] Falseprocessed_data image0_cut[keep_mask] 利用切片 import numpy as np# 假设…