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

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

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

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

方法一

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

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

方法二

function windowOpen(url) {
            window.open(url);
        }

方法三

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>
        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="aHtml('http://127.0.0.1:81/testJS/js.txt')">aHtml</button>
    <button onclick="windowOpen('http://127.0.0.1:81/testJS/js.txt')">windowOpen</button>
    <button onclick="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。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324455.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

java中String的两种创建方法、字符串常量池

java中String的两种创建方法 字符串常量池 字符串常量池 String的两种创建方式: 第一种方式是在常量池中获取字符串对象。第二种方式是直接在堆空间创建一个新的字符串对象。 //先检查字符串常量池中有没有“apesource”,如果字符产常量池中没有&#xff0c;则创建一个&#x…

测绘资质工程测量乙级资质办理条件

新测绘资质分为10个专业&#xff1a; 1.大地测量 2.测绘航空摄影 3.摄影测量与遥感 4.工程测量 5.海洋测绘 6.界线与不动产测绘 7.地理信息系统工程 8.地图编制 9.导航电子地图制作 10.互联网地图服务。 新《测绘资质管理办法》和《测绘资质分类分级标准》&#xff…

【linux】查看Debian应用程序图标对应的可执行命令

在Debian系统中&#xff0c;应用程序图标通常与.desktop文件关联。您可以通过查看.desktop文件来找到对应的可执行命令。这些文件通常位于/usr/share/applications/或~/.local/share/applications/目录下。这里是如何查找的步骤&#xff1a; 1. 打开文件管理器或终端。 2. 导…

Windows下python用ctypes调用C++程序的动态链接库方法(vs2019)

Windows下python用ctypes调用C程序的动态链接库方法&#xff08;vs2019&#xff09; https://blog.csdn.net/qq_34288751/article/details/121939189 https://blog.csdn.net/iambinglan1/article/details/133790822

​HDD回暖于2024,与SSD决战于2028--part1

去年小编曾表达过类似观点&#xff0c;市场留给HDD的时间已经不多了&#xff0c;未来5年的发展决定了HDD的最终命运。 扩展阅读&#xff1a;HDD最后的冲刺&#xff1a;大容量硬盘的奋力一搏 SSD以其高速度和低延迟等优点&#xff0c;尤其在容量增长和每GB成本降低方面&#x…

基于Ubuntu22.04部署生产级K8S集群v1.27(规划和核心组件部署篇)

本文档主要根据k8s官网文档和其插件的官网文档&#xff0c;参考部分他人优秀经验&#xff0c;在实际操作中逐渐完成&#xff0c;比较详尽&#xff0c;适合在境内学习者和实践者参考。 实操环境基于VMware Workstation 17 pro&#xff0c;采用ubuntu22.04操作系统&#xff08;有…

【JAVA-打包jar】jar不能双击运行,Jar包找不到主类

我的问题比较简单&#xff0c;搞了一下午&#xff0c;查阅了很多教程&#xff0c;无意发现&#xff0c;居然是 jdk过期需要更新&#xff01; 气的吐血&#xff01; 所以不要废话&#xff0c;首先检查自己的环境变量和JDK&#xff01;&#xff01;&#xff01; 环境变量&…

STC8H8K蓝牙智能巡线小车——2. 点亮左右转弯灯与危险报警灯

任务调用示例 RTX 51 TNY 可做多任务调度&#xff0c;API较为简单。 /* 接口API */// 创建任务 extern unsigned char os_create_task (unsigned char task_id); // 结束任务 extern unsigned char os_delete_task (unsigned char task_id);// 等待 extern unsig…

MySQL 协议(非常详细适合小白学习)

MySQL 查询过程 MySQL 查询过程大致如下&#xff1a; 1&#xff09;客户端与服务器端建立连接&#xff1b; 2&#xff09;客户端登陆 MySQL&#xff1b; 3&#xff09;客户端向服务器端发起一条请求&#xff1b; 4&#xff09;服务器端先检查查询缓存&#xff0c;如果命中缓…

uniapp 权限申请插件(权限使用说明) Ba-Permissions

简介&#xff08;下载地址&#xff09; Ba-Permissions 是一款权限申请插件&#xff0c;支持权限使用说明弹窗&#xff0c;满足市场审核需求。支持自定义权限申请&#xff0c;也支持快速申请定位、相机、媒体、文件、悬浮窗等常见权限。 支持权限使用说明弹窗&#xff0c;满足…

new mars3d.graphic.PolygonEntity({计算平面几何中心点及贴地效果展示

1.Mars3d提供了几何图形相关点位的计算方法polyutil&#xff1a; PolyUtil - V3.7.0 - Mars3D API文档 2.通过api可以算出相关经纬度坐标&#xff0c;实现相关中心点的展示 &#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 3.相关实现代码&#xff1a; fu…

【例7.5】 取余运算(mod) 快速幂

1326&#xff1a;【例7.5】 取余运算&#xff08;mod&#xff09; 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 输入b&#xff0c;p&#xff0c;k的值&#xff0c;求bpmodk 的值。其中b&#xff0c;p&#xff0c;kk为长整型数。 【输入】 输入b&#xff0c;p&#xf…

Python 基础【八】--数据类型-字典【2024.1.11】

1.定义 字典的内容在花括号 {} 内&#xff0c;键-值&#xff08;key-value&#xff09;之间用冒号 : 分隔&#xff0c;键值对之间用逗号 , 分隔&#xff0c;比如创建字典 &#xff0c;如下所示&#xff1a; d{name:小明,age:18}# 使用 dict 函数&#xff1a;强转 # 方式一&am…

YOLOv8训练自己的数据集

文章目录 1. 创建数据集文件结构数据集标注脚本分割数据集转换数据格式 2. 配置文件2.1 数据集配置2.2 选择需要的模型 3. 模型训练4. 测试 1. 创建数据集 环境&#xff1a; Ultralytics YOLOv8.0.230 &#x1f680; Python-3.8.18 torch-2.3.0.dev20231226cu118 CUDA:0 (NVIDI…

Python基础知识:整理10 异常相关知识

1 异常的捕获 1.1 基础写法 """基本语法&#xff1a;try:可能发生错误的代码except:如果出现异常&#xff0c;将执行的代码""" try:fr open("D:/abc.txt", "r", encoding"utf-8") except:print("出现异常…

Linux的基础命令学习

pwd - 显示当前工作目录的路径 cd - 切换工作目录&#xff0c;ls - 列出当前目录的文件和子目录 rm - 删除文件或目录 mkdir - 创建新目录 rm - 删除目录 nano/vi - 编辑文本文件&#xff0c;按Enter键进入 之后按i键就可以进入写入模式 之后输入文字以后按Esc键与:q就不保…

文件夹重命名:关键词替换文本间内容的方法,文件夹名称替换操作

在日常的生活和工作中&#xff0c;文件管理是一项重要的任务。经常要对文件夹重命名&#xff0c;或者替换文件夹名称中的特定关键词。现在一起来看云炫文件管理器如何批量操作。 文件夹名称的中间内容替换前后缩略图对比。 关键词替换文本间内容的方法&#xff1a; 操作1、执…

word无法插入方程式(方程式反灰)

word无法插入方程式&#xff08;方程式反灰&#xff09; 来自实测>插入方程式&#xff0c;反灰用不了>随便存在哪里&#xff0c;右键看属性&#xff1a;>发现真的是doc&#xff0c;得改成docx才可以&#xff1a;>打开原始档案&#xff0c;另存为word文件即可&#…

STM32WL用户手册学习

介绍 STM32Cube是意法半导体的原创产品&#xff0c;通过减少开发工作量、时间和成本来显著提高开发人员的生产力。STM32Cube涵盖了整个STM32产品组合。 STM32Cube包括&#xff1a; 一套用户友好的软件开发工具&#xff0c;涵盖项目开发从设计到生产&#xff0c;其中&#xf…

如何实现图片压缩

文章目录 1、canvas实现图片压缩2、其他 1、canvas实现图片压缩 canvas 实现图片压缩&#xff0c;主要是使用 canvas 的drawImage 方法 具体思路 拿到用户上传的文件转成base64创建一个 Image&#xff0c;主要是获取到这个图片的宽度和高度创建一个 2D 的画布&#xff0c;画布…