【发布时间】:2020-11-19 09:11:44
【问题描述】:
我有一个用户可以上传文档 (PDF) 的前端。它将这些 PDF 转换为 Base64 字符串,然后将其发送到微服务,然后上传到 Backblaze B2。此方法在上传时工作正常,例如.jpg 文件,但是在尝试使用 .pdf 文件时,在 Backblaze 的网站上浏览文件时,我无法打开它:
这是我的前端代码:
export const toBase64 = (file: File | Blob) =>
new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = (error) => reject(error);
});
...
const base64String = await toBase64(acceptedFiles[index]);
onSelectFile(base64String as string);
这是我的后端代码:
const { base64String, fileName } = request.body.input;
const fileBuffer = Buffer.from(
base64String.replace(/^data:image\/(png|gif|jpeg|jpg|pdf);base64,/, ""),
"base64"
);
const getUploadUrlResponse = await b2.getUploadUrl({
bucketId: process.env.BACKBLAZE_BUCKET_ID || "bucketId",
});
const uploadFileResponse = await b2.uploadFile({
uploadUrl: getUploadUrlResponse.data.uploadUrl,
uploadAuthToken: getUploadUrlResponse.data.authorizationToken,
fileName: fileName,
data: fileBuffer,
mime: "application/pdf",
});
正如我所说,这在上传 .jpg 时可以正常工作,但在使用 .pdf 时会导致“加载 PDF 文档失败”。我不确定我做错了什么或如何解决这个问题。
【问题讨论】:
-
pdf的mimetype不是
application/pdf吗?您的.replace()正在尝试替换image/pdf。我很惊讶.from()没有对此抛出异常。
标签: javascript node.js pdf base64 backblaze