首页 > 其他分享 >解决因跨域导致使用a标签下载文件download属性失效无法自定义命名的问题

解决因跨域导致使用a标签下载文件download属性失效无法自定义命名的问题

时间:2024-05-29 16:55:35浏览次数:17  
标签:文件 跨域 自定义 url 标签 download 下载 属性

问题背景:

在使用a标签下载文件时,download属性可以更改下载的文件

// 下载a.exe,并采用默认命名
<a href="/images/a.exe" download>点击下载</a>
 
 
// 将a.exe改名为b.exe下载
<a href="/images/a.exe" download="b">点击下载</a>

注意:

html5 新特性a标签download属性只支持谷歌和火狐
在谷歌和火狐浏览器a标签download属性修改文件名失效的原因:不同源,访问的域名和href的域名要一致。

 解决方法:

使用Blob实现文件下载,先把文件以bobl的形式下载到当前页面,再创建a标签。

// 下载url(解决跨域a.download不生效问题)
      downloadFile(url, fileName) {
        const x = new XMLHttpRequest()
        x.open("GET", url, true)
        x.responseType = 'blob'
        x.onload = function(e) {
          const url = window.URL.createObjectURL(x.response)
          const a = document.createElement('a')
          a.href = url
          a.target = '_blank'
          a.download = fileName
          a.click()
          a.remove()
        }
        x.send()
      },
      <el-link
        :disabled="validateNull(fileUrl)"
        :type="validateNull(fileUrl) ? 'info' : 'primary'"
        :underline="true"
        style="font-size:14px;"
        @click="downloadFile(fileUrl, fileName)"
      >
        {{ fileName|| '-' }}
      </el-link>

 

 

 

ps: https://blog.csdn.net/qq_44170108/article/details/134415071

标签:文件,跨域,自定义,url,标签,download,下载,属性
From: https://www.cnblogs.com/init-007/p/18220649

相关文章

  • echarts饼图给legend图例增加自定义点击事件
    echarts图例点击会有一个默认的点击事件,会把点击的图例对应的legend取消解决办法legendselectchanged事件中将取消选中的legend动态设置回来,主要代码如下:letchart=echarts.init(document.getElementById('main'),null)//图例点击事件chart.on('legendselectchanged',(pa......
  • uniapp自定义富文本编辑器+内容渲染回显功能(多端可用)
    这个编辑器app端、H5端、小程序端都可以用,这里以小程序为例。先上效果图,文本编辑、样式调整、图片上传等各项功能皆可满足。一、整体介绍 使用富文本编辑并且可以渲染内容这个功能,主要涉及到两个页面。①触发编辑的页面(按钮+接收富文本内容)②编辑器页面(效果图页面)二......
  • custom:用户自定义插件,提供开放能力
    custom插件的功能:支持用户在右键菜单中自定义插件。简介custom插件大量采用声明式代码(声明代替代码开发),比如:只需使用style=()=>"...",即可注册css。只需使用styleTemplate=()=>({renderArg}),即可引入css文件,并且支持渲染模板。只需使用html=()=>"...",即......
  • 第20讲:自定义类型:联合和枚举
    目录1.联合体1.1联合体类型的声明1.2联合体的特点1.3相同成员的结构体和联合体对比1.4联合体的大小1.5联合的一个练习2.枚举类型2.1枚举类型的声明2.3枚举类型的使用1.联合体1.1联合体类型的声明像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员......
  • 在Spring中自定义事件及发布与监听
    在Spring框架中,自定义事件及其发布与监听是一个涉及Spring事件机制的过程。Spring提供了一个基于观察者模式的事件发布和监听机制,允许在Spring容器中的组件之间进行松耦合的通信。以下是如何自定义事件以及如何发布和监听这些事件的步骤:1.创建自定义事件类首先,需要定义一......
  • 容器组件Tabs如何自定义 tabBar-高亮切换
    1.TabBar如果放在底部的话,一般会显示图形和文字,甚至有特殊的图标,如果要实现此类效果,就需要自定义tabBarTabs(){TabContent(){//内容略}.tabBar(this.tabBarBuilder())}@BuildertabBarBuilder(){//自定义的Tabbar结构}2.自定义TabBa......
  • 浅析SpringBoot中的AOP以及自定义注解类
    概念说明SpringBoot中的AOP(面向切面编程)是一种编程范式,它允许开发者定义跨多个对象的横切关注点。横切关注点是与业务逻辑无关的功能,如日志记录、安全检查、事务管理等。AOP的主要目的是将横切关注点与业务逻辑分离,提高代码的模块化和可维护性。AOP的核心概念包括:切面(As......
  • 自定义一个简单的日历
    前言  此博客提供一个个人实现的自定义View,日历的内容全部是通过绘制实现的。 虽然是使用flutter实现自定义日历View的,但是关键核心思想是一致的,这边放到博客中提供给各位参考。后续有时间会继续提供Android版本的自定义日历.效果图代码最关键的是绘制日历内容的4个函数......
  • CSS 之 自定义属性(变量)
    一、简介​CSS的自定义属性,又称为CSS变量或级联变量,用于定义一个带有值的、可重复使用的CSS属性(变量)。其包含的值可以在其作用域内的任意属性上重复使用,在使用时需要借助var()函数获取自定义属性的值。当自定义属性的值发生变化时,所有使用该自定义属性的CSS属性都会随之变......
  • Kettle 自定义循环 & 更新变量值
    布局图 Setvariables JavaScript(循环逻辑)varmin=newNumber(parent_job.getVariable("MIN"));varmax=newNumber(parent_job.getVariable("MAX"));if(max>=min){true;}else{false;}JavaScript(更新循环条件)varmax=newNum......