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

我有一个前端,用户可以在其中上传文档(PDF)。它将这些 PDF 转换为 Base64 字符串,然后将其发送到微服务,并在其中上传到 Backblaze B2。这种方法在上传.jpg文件时效果很好,但是当尝试使用文件时,.pdf在 Backblaze 网站上浏览文件时它不允许我打开它:


https://img3.mukewang.com/64df2a180001660f06510204.jpg

这是我的前端代码:


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 文档”。我不确定我做错了什么或如何解决这个问题。


达令说
浏览 249回答 1
1回答

慕田峪4524236

使用这个base64String.replace(/^data:.+;base64,/, "")代替base64String.replace(/^data:image\/(png|gif|jpeg|jpg|pdf);base64,/, "")作品。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript