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

如何通过JSON响应保存文件?能否用给定JSON数据下载文件?

如何通过JSON响应保存文件?

当然可以将文件保存到本地,你收到的JSON里的file字段是Base64编码的文件二进制内容,只需要解码后写入本地文件即可。下面分不同场景给出具体实现:

关键字段说明

  • data.contentType:文件的MIME类型(这里是Excel格式)
  • data.file:Base64编码的文件原始二进制数据
  • data.name:建议保存的文件名

Python 实现

import json
import base64

# 替换为你实际获取到的JSON响应字符串
json_response = '''
{
    "additionalErrors": null,
    "data": {
        "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "file": "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAATAAAAeGwvdGhlbWUvdGhlbWUxLnhtbOyZz2/bNhT...",
        "name": "export-data.xlsx"
    },
    "error": false,
    "errorText": ""
}
'''

# 解析JSON并提取关键数据
response_obj = json.loads(json_response)
base64_content = response_obj['data']['file']
save_name = response_obj['data']['name']

# 解码Base64并写入文件
decoded_content = base64.b64decode(base64_content)
with open(save_name, 'wb') as f:
    f.write(decoded_content)

浏览器端 JavaScript 实现

// 替换为你实际获取到的JSON响应对象
const jsonResponse = {
    "additionalErrors": null,
    "data": {
        "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "file": "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAATAAAAeGwvdGhlbWUvdGhlbWUxLnhtbOyZz2/bNhT...",
        "name": "export-data.xlsx"
    },
    "error": false,
    "errorText": ""
};

const base64Content = jsonResponse.data.file;
const saveName = jsonResponse.data.name;
const contentType = jsonResponse.data.contentType;

// 解码Base64为Blob对象
const byteStr = atob(base64Content);
const byteArr = new Uint8Array(byteStr.length);
for (let i = 0; i < byteStr.length; i++) {
    byteArr[i] = byteStr.charCodeAt(i);
}
const blob = new Blob([byteArr], { type: contentType });

// 生成下载链接并触发下载
const downloadUrl = URL.createObjectURL(blob);
const link = document.createElement('a');
link.href = downloadUrl;
link.download = saveName;
document.body.appendChild(link);
link.click();

// 清理资源
document.body.removeChild(link);
URL.revokeObjectURL(downloadUrl);

Node.js 实现

const fs = require('fs');
const { fromByteArray } = require('base64-js');

// 替换为你实际获取到的JSON响应字符串
const jsonResponse = `
{
    "additionalErrors": null,
    "data": {
        "contentType": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        "file": "UEsDBBQACAAIAAAAAAAAAAAAAAAAAAAAAAATAAAAeGwvdGhlbWUvdGhlbWUxLnhtbOyZz2/bNhT...",
        "name": "export-data.xlsx"
    },
    "error": false,
    "errorText": ""
}
`;

const responseObj = JSON.parse(jsonResponse);
const base64Content = responseObj.data.file;
const saveName = responseObj.data.name;

// 解码Base64并写入文件
const decodedBytes = fromByteArray(base64Content);
fs.writeFileSync(saveName, decodedBytes);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:05:11