JS 下载 URL 链接文件(点击按钮、点击a标签、支持代理与非代理下载)

一、简介

  • dowload.js(导入项目即可使用,根据项目框架调整导出方式),Demo示例地址

  • 注意:a 标签中 download 属性可以更改下载文件的文件名。但是如果是跨域的话,download 属性就会失效,所以通过 a 标签下载的时候,传入的 filename 没有生效,则需要检查是否跨域了。

  • 支持 原生 使用,也支持 VueReact 等使用。

二、Vue 使用

  • vue.config.js 代理配置,配置文件有调整需要重新启动项目,注意:这里配置的代理,服务器端也需要配置上,否则无法生效,下载也会失败

    devServer: {
      // 端口号
      port: 8080,
      // 配置不同的后台API地址
      proxy: {
        '/dowload1': {
          target: 'https://gimg2.baidu.com',
          ws: false,
          changeOrigin: true,
          pathRewrite: {
            '^/dowload1': ''
          }
        },
        '/dowload2': {
          target: 'https://scpic.chinaz.net',
          ws: false,
          changeOrigin: true,
          pathRewrite: {
            '^/dowload2': ''
          }
        }
      }
    }
    
  • 页面使用

    <template>
      <div>
        <div class="dowload-btn" @click="touchProxyDowload1">按钮-代理下载</div>
        <div class="dowload-btn" @click="touchProxyDowload2">按钮-代理下载-自定义文件名</div>
        <div class="dowload-btn">
          <a href="/dowload2/files/pic/pic9/202103/hpic3704.jpg" download>a标签-代理下载</a>
        </div>
        <div class="dowload-btn">
          <a href="/dowload1/image_search/src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201311%2F17%2F174124tp3sa6vvckc25oc8.jpg&refer=http%3A%2F%2Fattach.bbs.miui.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618976641&t=ca698f4ed0e96eb2f269ccff644bda03" download="avatar.jpg">a标签-代理下载-自定义文件名</a>
        </div>
      </div>
    </template>
    
    <script>
    import { DOWLOAD_FILE, DOWLOAD_FILE_PRO } from './dowload'
    export default {
      data () {
        return {
          // 下载测试连接,百度随便搜的图片地址:
    
          // https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201311%2F17%2F174124tp3sa6vvckc25oc8.jpg&refer=http%3A%2F%2Fattach.bbs.miui.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618976641&t=ca698f4ed0e96eb2f269ccff644bda03
    
          // https://scpic.chinaz.net/files/pic/pic9/202103/hpic3704.jpg
        }
      },
      methods: {
        // 按钮-代理下载(代理配置存放在 vue.config.js,也可以放在服务器中配置)
        touchProxyDowload1 () {
          // 有后缀的则会使用当前后缀图片名称,也可以像上面那样自定义
          DOWLOAD_FILE('/files/pic/pic9/202103/hpic3704.jpg', '/dowload2')
        },
        // 按钮-代理下载-自定义文件名(代理配置存放在 vue.config.js,也可以放在服务器中配置)
        touchProxyDowload2 () {
          // 这种没有后缀的图片需要自己传入图片名称带后缀.png .jpg ...
          DOWLOAD_FILE_PRO('/image_search/src=http%3A%2F%2Fattach.bbs.miui.com%2Fforum%2F201311%2F17%2F174124tp3sa6vvckc25oc8.jpg&refer=http%3A%2F%2Fattach.bbs.miui.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1618976641&t=ca698f4ed0e96eb2f269ccff644bda03', 'avatar.png', '/dowload1')
        }
      }
    }
    </script>
    
  • Demo效果

    image.png

    temp.gif

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡尔特斯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值