我有一个前端,用户可以在其中上传文档(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 文档失败”。我不确定我做错了什么或如何解决这个问题。