javascript - 如何从 JSON 响应解码客户端的 Base64 文件?
问题描述
我有一个在服务器端呈现文件的应用程序。我通过 json 将它作为“base64”字符串传递。我需要在客户端解码和下载文件。我以简化的形式呈现了代码,留下了与问题相关的内容。
这是快递服务器上的路线:
let xlsx = require('node-xlsx').default;
const express = require('express');
const router = express.Router();
router.get('/', (req, res) => {
const data = [[1, 2, 3], ['a', 'b', 'c']];
var buffer = xlsx.build([{ name: "mySheetName", data: data }])
.toString('base64');
res.json(buffer);
});
module.exports = router;
客户端上的 React 组件:
import React, { useEffect } from 'react';
import axios from 'axios';
const First = () => {
useEffect(() => {
axios({
url: 'http://localhost:5000/excel',
method: 'GET',
responseType: 'blob',
}).then(res => {
const url = window.URL.createObjectURL(new Blob([res.data]));
const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'data.xlsx');
document.body.appendChild(link);
link.click();
});
}, []);
return (
<div>
<h3>First page</h3>
<hr className="gold" />
</div>
);
};
export default First;
问候。
解决方案
采用atob
查看快速示例
let myData = "YQ=="
console.log(atob(myData)); // a
推荐阅读
- python - 每当我尝试在没有 img Django 的情况下发布时显示错误
- python - 如何在多折线图中将空值行添加到熊猫数据框中以丢失年份
- c++ - 为什么是'break;' 嵌套循环中的 if 语句没有按预期工作?
- c# - Azure API - 使用客户端证书 + OAUTH 2.0 对 API 进行身份验证
- java - 有人可以解释在 String 类中被覆盖的 toString 方法的源代码吗?
- excel - goolge 表中的数组公式与 excel 中的数组公式:自动填充列
- python - 嗨,我一直在尝试使用 python 开发自己的交易机器人,有人可以向我说明如何从 deriv 获取实时价格
- android - 科尔多瓦找不到 JAVA
- javascript - 剩余运行中的 jquery 的某些部分在代码中不起作用,但在控制台中起作用
- java - 有人可以解释一下这个片段中 for 循环的工作原理吗