千家信息网

怎么根据后端返回的url下载json文件

发表于:2025-11-06 作者:千家信息网编辑
千家信息网最后更新 2025年11月06日,这篇文章主要介绍"怎么根据后端返回的url下载json文件"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么根据后端返回的url下载json文件"文章能帮助大
千家信息网最后更新 2025年11月06日怎么根据后端返回的url下载json文件

这篇文章主要介绍"怎么根据后端返回的url下载json文件"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"怎么根据后端返回的url下载json文件"文章能帮助大家解决问题。

需求场景描述

有时候会遇到异步接口会返回一个 url 地址,然后前端需要根据这个 url 地址去下载文件资源的需求场景。 而这个 url 其实是一个静态资源地址,并非一个经过后端接口内部处理的接口地址。 所以当尝试像下面这样使用 a 标签去执行该 url 地址,会发现它是直接预览打开的一个 json 文件(也可能是一个txt,js等文件)

下载json

在浏览器窗口直接打开该 url ,会发现它也是直接打开了这个 json 文件。txt,js,css 等可访问的静态资源地址也会被直接打开(这或许叫预览,两种形式,一种是预览文件,另一种是下载文件)而不是下载。 这和资源地址返回的方式(responseType)有关, 默认返回的可能是字节流或字符流的形式,而这种返回形式能被浏览器识别预览,于是就直接打开了(执行了预览文件模式)。 我们更常见的可能是图片,它可以直接在浏览器打开预览,这大概率也是因为其返回的形式是 base64 的图片, 它能被浏览器识别,于是就浏览器就正常执行了文件预览模式,而非下载模式。

例如,同样位置的静态资源,一个是 json,一个是 .zip 压缩文件。两个 url,你会发现在浏览器窗口执行 json 文件的 url, 浏览器执行的是预览模式,直接打开了文件。而在浏览器窗口输入 .zip 压缩文件的 url,浏览器并没有执行预览模式, 而是执行了下载模式,直接下载文件了。

下面是两个测试的示意图

那么,如果想根据这种接口返回的 url(一个静态资源地址,例如 一个 json 或 txt 文件的资源地址), 直接下载而不是预览该如何做呢?

处理方案关键词:异步下载,设置 responseType = 'blob'。

实现思路分析

1.设置请求的返回方式为 responseType = 'blob',如果不设置可能会导致下载后无法正常打开。

2.设置请求地址,请求方式,以及必要的请求头参数等,例如 token 等,可按需设置。

3.将返回的字节流(字符流)转换为 blob 对象

const blob = new Blob([res.data]) // 将字节流(字符流)转换为 blob 对象

4.为该 blob 在创建一个资源 url

let url = window.URL.createObjectURL(blob)

5.使用该 url 创建一个 a 标签,模拟点击事件执行下载

这一步,和我们平常使用的同步下载资源文件方式一致。下载后需注意释放掉 blob 对象的 ObjectURL。

let link = document.createElement('a')link.style.display = 'none'link.href = urllink.download = filenamedocument.body.appendChild(link)link.click()document.body.removeChild(link) // 下载完成移除元素window.URL.revokeObjectURL(url) // 释放掉blob对象

tips:ie 并不支持直接下载 blob 资源,可以利用 window.navigator.msSaveOrOpenBlob(blob, filename) 解决这个问题。

//  解决 ie 不支持下载 blob资源if ('msSaveOrOpenBlob' in navigator) {  window.navigator.msSaveOrOpenBlob(blob, filename)  return}

上述代码在 ie 执行会自动打开一个询问窗口,该窗口会问你是下载还是预览,选择下载就可以正常下载了。

下面是一个在 ie 执行下载 blob 后的截图

完整的 demo 示例

关于"怎么根据后端返回的url下载json文件"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

文件 资源 地址 浏览器 浏览 对象 方式 模式 形式 字符 静态 接口 标签 知识 处理 支持 两个 元素 关键 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 鲜沣互联网科技公司 杭州 中兴服务器管理口默认地址 软件开发测试比例 移动互联网和软件开发哪个好 网络安全教育知识10条 一个服务器集群的性能 中国电信的网络技术 农村信用社软件开发面试 网络安全教肓总结 软件开发用哪个好 软件开发服务需要签订合同吗 少儿怎么进行网络安全教育 监控服务器报警怎么办 数据库dql数据查询语句 怒江服务器 iphone13 无法验证服务器身份 信息管理系统需要数据库吗 sql数据库分离路径在哪 星露谷物语 数据库 app 广东交友软件开发有用吗 分布式数据库技术原理 计算机软件开发行业证书 福建网络安全应急中心大屏幕 区块链服务器和云服务器有啥区别 源文件数据库包括哪些 大学生网络技术大赛教材 信息网络安全公安部重点实验 常用网络安全命令实训报告 网络安全模拟法庭剧本 服务器mod和客户端有什么区别
0