You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue2中如何通过JavaScript下载指定URL的.js文件?

解决Vue 2中从URL下载.js文件的问题

你当前的代码错误在于把API返回的path字符串直接塞进了Blob里,所以下载的文件自然只是那个URL文本,而不是实际的脚本文件内容。下面是两种可行的解决方法:

方法一:直接利用目标URL下载(简单快捷,需跨域允许)

如果目标文件的服务器允许跨域访问,直接创建指向res.data.path的下载链接即可,无需额外请求文件内容:

downloadScript() {
  ApiService.post(`url`).then((res) => {
    try {
      const anchor = document.createElement("a");
      anchor.href = res.data.path;
      anchor.setAttribute("download", "script.js");
      // 处理某些浏览器需要添加到DOM才能触发下载的情况
      document.body.appendChild(anchor);
      anchor.click();
      document.body.removeChild(anchor);
    } catch (err) {
      console.error('下载失败:', err);
    }
  });
}

方法二:先请求文件内容再生成Blob下载(适配跨域场景)

如果目标URL存在跨域限制,需要先通过Axios获取文件的二进制内容,再生成Blob进行下载:

downloadScript() {
  ApiService.post(`url`).then((res) => {
    // 用Axios请求目标文件,responseType设为blob获取二进制数据
    return axios.get(res.data.path, { responseType: 'blob' });
  }).then((fileRes) => {
    try {
      const url = window.URL.createObjectURL(fileRes.data);
      const anchor = document.createElement("a");
      anchor.href = url;
      anchor.setAttribute("download", "script.js");
      document.body.appendChild(anchor);
      anchor.click();
      // 释放URL对象,避免内存泄漏
      window.URL.revokeObjectURL(url);
      document.body.removeChild(anchor);
    } catch (err) {
      console.error('下载失败:', err);
    }
  }).catch(err => {
    console.error('请求文件地址失败:', err);
  });
}

注意事项

  • 方法一需要目标服务器配置Access-Control-Allow-Origin允许你的前端域名访问,否则浏览器会拦截跨域请求。
  • 方法二中要确保Axios的responseType设置为blob,这样才能正确获取文件的二进制内容。

内容的提问来源于stack exchange,提问作者Osman Rafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 05:01:39