为了账号安全,请及时绑定邮箱和手机立即绑定

将 PDF 编码为 Base64 字符串并使用 Node.js Buffer.from()

将 PDF 编码为 Base64 字符串并使用 Node.js Buffer.from()

达令说 2023-08-18 16:21:08
我有一个前端,用户可以在其中上传文档(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 文档”。我不确定我做错了什么或如何解决这个问题。
查看完整描述

1 回答

?
慕田峪4524236

TA贡献1875条经验 获得超5个赞

使用这个

base64String.replace(/^data:.+;base64,/, "")

代替

base64String.replace(/^data:image\/(png|gif|jpeg|jpg|pdf);base64,/, "")

作品。


查看完整回答
反对 回复 2023-08-18
  • 1 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信