【发布时间】:2021-08-19 15:59:47
【问题描述】:
我一直在尝试通过将我的 XLSX 解析移动到 API 路由来减小我的 NextJS 包大小。它使用 npm xlsx (sheetjs) 包,并从选定的 XLSX 中提取 JSON。
我在前端做的是
let res;
let formData = new FormData();
formData.append("file", e.target.files[0]);
try {
res = await axios.post("/api/importExcel", formData);
} catch (e) {
createCriticalError(
"Critical error during file reading from uploaded file!"
);
}
在 API 路由上,我无法使用 XLSX.read() 读取文件
我相信 NextJS 对传入的请求使用 body-parser,但我无法将传入的数据转换为数组缓冲区或任何 XLSX 的可读格式。
您对如何解决这个问题有什么建议吗?
我尝试了多种解决方案,最可行的似乎是这个,但它仍然不起作用
export default async function handler(req, res) {
console.log(req.body);
let arr;
let file = req.body;
let contentBuffer = await new Response(file).arrayBuffer();
try {
var data = new Uint8Array(contentBuffer);
var workbook = XLSX.read(data, { type: "array" });
var sheet = workbook.Sheets[workbook.SheetNames[0]];
arr = XLSX.utils.sheet_to_json(sheet);
} catch (e) {
console.error("Error while reading the excel file");
console.log({ ...e });
res.status(500).json({ err: e });
}
res.status(200).json(arr);
}
【问题讨论】:
标签: axios next.js xlsx body-parser sheetjs