a标签下载文件重命名(download)不生效

news2024/12/25 22:19:01

项目场景:

移动端使用 a 标签下载文件


问题描述

下载的文件使用 download 重命名不生效

APP 中接收数据代码:

 const link = document.createElement('a') // 创建a标签
            link.style.display = 'none' // 使其隐藏
            link.href = 'http://192.168.103.1:8080/factory/v1/group1/M00/00/30/wKhnWWa6xf2AEеKVAAAAFQHKOQM949.txt' // 赋予文件下载地址
            link.setAttribute('download', `${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')}`) // 设置下载属性 以及文件名
            document.body.appendChild(link) // a标签插至页面中
            link.click() // 强制触发a标签事件
            document.body.removeChild(link)

在这里插入图片描述


原因分析:

跨域问题:如果下载文件所在的服务器与当前页面不在同一域名下,download属性可能无法正常工作。这是因为跨域访问限制了文件下载。


解决方案:

使用fetch或者axios获取数据流,转成blob 之后就是同源的文件了,此时可以使用a标签正常下载了,注意需要添加请求头'Content-Type': 'application/json;charset=UTF-8'

fetch('http://192.168.103.1:8080/factory/v1/group1/M00/00/30/wKhnWWa6xf2AEеKVAAAAFQHKOQM949.txt', {
                method: 'get',
                heanders: {
                    'Content-Type': 'application/json;charset=UTF-8'
                }
            })
                .then(res => res.blob())
                .then(blob => {
                    const link = document.createElement('a')
                    link.style.display = 'none'
                    link.download = `${dayjs(new Date()).format('YYYY-MM-DD HH:mm:ss')}`// 设置下载属性 以及文件名
                    link.href = URL.createObjectURL(blob)

                    document.body.appendChild(link)
                    link.click()
                    // 释放的 URL 对象以及移除 a 标签
                    URL.revokeObjectURL(link.href)
                    document.body.removeChild(link)
                })

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统内存管理技术详解

操作系统内存管理技术详解:第一部分 引言 操作系统作为计算机系统的核心组件,负责管理硬件资源、提供用户接口和运行应用程序。在操作系统的众多功能中,内存管理无疑是最为关键的技术之一。本文将深入探讨操作系统内存管理的背后技术&…

如何选择图片和视频

文章目录 1. 概念介绍2. 方法与细节2.1 实现方法2.2 具体细节 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何选择视频文件"相关的内容,本章回中将介绍如何混合选择图片和视频文件.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我…

Android逆向题解-Illusion-难度6

jeb反编译 s 是用户输入,s1 是加密后flag: KuG_V9v(yGS 传入Native函数 CheckFlag IDA分析Native函数 注意这里有一个陷阱,CheckFlag有静态注册函数和动态注册函数,会执行动态注册的函数。 a2 93 只会走sub_1028 sub_102…

如何找IEEE论文中的作者指南(INFORMATION FOR AUTHORS)

文章目录 0.为什么需要作者指南1.进入所要发表期刊的官网并找到作者指南1.1百度直接搜索Transactions on Cybernetics1.2 点击About Journal进入并点击左下角Publication Details1.3 展开后点击Informations for author1.4 下载作者指南 2.结果显示 0.为什么需要作者指南 说明你…

STM32CubleMX创建FreeRtos工程教程,图文教程

前言:STM32CubeMX 是一个开发工具,它已经将 FreeRTOS 这个实时操作系统(RTOS)集成到其工具中。换句话说,通过 STM32CubeMX,可以非常方便地为 STM32 微控制器生成配置代码,其中包括对 FreeRTOS 的…

进阶SpringBoot之员工管理系统(5)展示员工列表和添加员工

Employee.java:模拟员工表 package com.demo.web.pojo;import lombok.Data; import lombok.NoArgsConstructor;import java.util.Date;//员工表 Data NoArgsConstructor public class Employee {private Integer id;private String lastName;private String email;…

第十五章 数据管理成熟度评估5分

15.0 语境关系图 活动: 计划评估活动(P)。进行成熟度评估(C)。拟定建议(D)。制定有针对性的改进计划(P)。 5. 重新评估成熟度(C) 应定期进行重新…

18308 最长公共子序列长度

### 分析 1. **问题描述**: - 给定两个字符串,要求找到它们的最长公共子序列的长度。 2. **解决方案**: - 使用动态规划(Dynamic Programming, DP)来解决这个问题。 - 定义一个二维数组dp,其中d…

使用AWS Lambda轻松开启Amazon Rekognition之旅

这是本系列文章的第一篇,旨在通过动手实践,帮助大家学习亚马逊云科技的生成式AI相关技能。通过这些文章,大家将掌握如何利用亚马逊云科技的各类服务来应用AI技术。 那么让我们开始今天的内容吧! 介绍 什么是Amazon Rekognition&…

Java基础之循环嵌套

循环嵌套 在一个循环内部可以嵌套另一个或多个循环。 外部循环每执行1次,内层循环会执行1轮(全部)。 案例1: 连续3天,每天都要表白5次。 package com.briup.chap03;public class Test03_Nest {public static void main(String[] args) {…

MyBatis-Plus 自动填充字段详细教程

所以,接受事实,调整下略微悲观的态度。未来,也不一定就只会发生不好的变化。这变化,说不定也有好的,不是吗? 今天编写一个详细的教程来介绍如何在 Spring Boot 项目中使用 MyBatis-Plus 实现自动填充时间字…

补充线程结束方式,资源回收与线程的相互竞争

一.补充线程结束的方式 1.pthread_exit //pthread_jion 2.从线程执行函数中return //此时效果等价于pthread_exit 3. int pthread_ cancel (pthread _ t thread) 功能:发送取消请求 参数:thread 表示要发送的线程tid号 4.…

cv2,PIL绘制矩形框与图片的切片(易错)

目录 1. cv2绘制矩形框代码 2. PIL绘制矩形 3. cv2图片的切片 1. cv2绘制矩形框 import cv2# 读取图像 img cv2.imread(img.png)# 绘制矩形框 cv2.rectangle(img, (100, 200), (300, 300), (0, 255, 0), 3)# 显示图像 cv2.imshow(Image with Rectangle, img) cv2.waitKey(0…

LeetCode.20.有效的括号

题目描述: 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有…

云原生和安装Ubuntu 22系统

一.云原生简介 2004年开始,Google已在内部大规模地使用容器技术。 2008年,Google将 Cgroups合并进入了Linux内核。2013年,Docker项目正式发布。2014年,Kubernetes项目正式发布。2015年,由Google、Redhat 以及微软等大…

【电路笔记】-π 型衰减器

π 型衰减器 文章目录 π 型衰减器1、概述2、等阻抗π-型衰减器3、π-型衰减器示例14、不等阻抗π-型衰减器5、π-型衰减器示例26、平衡π-型衰减器π-型衰减器常用于射频和微波传输线路中,可以是平衡或非平衡设计 1、概述 π-型衰减器之所以如此命名,是因为其基本布局和设计…

图书借阅会员员工管理小程序开发

图书借阅微信小程序全面升级方案 本图书借阅微信小程序旨在打造一站式、高效便捷的图书管理与借阅平台,支持多书馆无缝切换与一键同步图书信息,为会员提供流畅的在线借书体验,同时赋予员工强大的管理工具,确保从会员到书馆的每一…

File的概述和构造方法

一.路径: 相对路径开头不带盘符。 二.File: 1.File对象: File对象就表示一个路径,可以是文件的路径,也可以是文件夹的路径, 这个路径可以是存在的,也可以是不存在的。 2.File对象常见的构造…

C:指针学习-指针变量—学习笔记

今日伊雷娜: 目录 前言: 1、字符指针变量 1.1 使用字符指针存放字符 1.2 使用字符指针变量存放字符串 2、数组指针变量 2.1 什么是数组指针变量? 2.2 数组指针变量初始化 2.3 关于数组指针类型的解析 3、函数指针变量 3.1 函数地址 …

如何将CSDN文章导出为pdf文件

第一步: 打开想要导出的页面,空白处点击鼠标右键⇒点击“检查”或“check”,或直接在页面按F12键。 第二步: 复制以下代码粘贴到控制台,并按回车。 若提示让输入“允许粘贴”或“allow pasting”,按提示…