当前位置: 首页 > 面试题库 >

使用a标签的download属性下载文件会有跨域问题吗?如何解决?

桓深
2023-03-14
本文向大家介绍使用a标签的download属性下载文件会有跨域问题吗?如何解决?相关面试题,主要包含被问及使用a标签的download属性下载文件会有跨域问题吗?如何解决?时的应答技巧和注意事项,需要的朋友参考一下

最近刚遇到这个问题,后台返回的图片链接,点击按钮批量下载,a标签的 download 属性只对同源文件有效,
所以我们这里先把图片 url 转为 blob 格式,然后再下载

  /**
   ** 将图片 url 转换为 blob 格式
   ** @param httpUrl: 图片链接,如 https://cdn.aaa.com/bbb.jpg
   */
  private async urlToBlob(httpUrl) {
    const res: Response = await fetch(httpUrl);
    const blob: Blob = await res.blob();
    const blobUrl = URL.createObjectURL(blob);
    return blobUrl;
  }

  /**
   ** 下载图片到本地
   ** @param blobUrl: blob 格式的图片文件
   ** @param name: 图片名称
   */
  private download(blobUrl, name) {
    // 创建虚拟a标签
    const eleLink = document.createElement('a');
    eleLink.download = name;
    eleLink.style.display = 'none';
    eleLink.href = blobUrl;
    // 触发点击
    document.body.appendChild(eleLink);
    eleLink.click();
    // 然后移除
    document.body.removeChild(eleLink);
    URL.revokeObjectURL(blobUrl);
  }
 类似资料:
  • 本文向大家介绍为什么会有跨域问题?怎么解决跨域?相关面试题,主要包含被问及为什么会有跨域问题?怎么解决跨域?时的应答技巧和注意事项,需要的朋友参考一下 为啥会有跨域问题 怎么解决跨域呢? 方案一 JSONP:通过script可以跨域的原理,执行服务端的回调函数 方案二 代理:nigix 或者webpack 代理 配置 方案三 CORS :"跨域资源共享",设置'Access-Control-All

  • 本文向大家介绍如何解决css加载字体跨域的问题?相关面试题,主要包含被问及如何解决css加载字体跨域的问题?时的应答技巧和注意事项,需要的朋友参考一下 https://blog.csdn.net/weixin_33953384/article/details/86252975

  • 背景: 项目访问地址:https://xxx.com a标签下载文件的方式,类似 在本地下载正常,部署到正式环境之后,下载失败 定位原因:是项目访问https的原因,更改成http之后下载正常。 解决方案: 进行代理转发,改成调用接口的方式进行下载 设置代理 "/api/file-storage","http://10.8.15.1:10040/file-storage/" 书写、调用接口 接口u

  • 本文向大家介绍如何用Nginx解决前端跨域问题,包括了如何用Nginx解决前端跨域问题的使用技巧和注意事项,需要的朋友参考一下 前言 在开发静态页面时,类似Vue的应用,我们常会调用一些接口,这些接口极可能是跨域,然后浏览器就会报cross-origin问题不给调。 最简单的解决方法,就是把浏览器设为忽略安全问题,设置--disable-web-security。不过这种方式开发PC页面到还好,如

  • 我正在使用Spring MVC FreeMarker集成。由于我是FreeMarker的新手,我无法从属性文件中找到配置FreeMarker标签的方法。 请帮我解决这个问题。 谢谢。

  • 问题内容: 目的是使产品名称出现在缩略图的工具提示中。浏览器不会根据“ ng-title”或“ ng-attr-title”创建工具提示。 我们正在使用AngularJS 1.0.7版。您可以在任何属性前面加上“ ng-”或“ ng- attr”,Angular会进行相应的绑定。但是,它似乎没有“绑定”到HTML“ A”标签的标题上。 例如 1。 码: 预期结果: 实际结果:工具提示中出现不必要的