Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将PDF编码为Base64字符串并使用Node.js Buffer.from()会导致文件损坏_Javascript_Node.js_Pdf_Base64_Backblaze - Fatal编程技术网

Javascript 将PDF编码为Base64字符串并使用Node.js Buffer.from()会导致文件损坏

Javascript 将PDF编码为Base64字符串并使用Node.js Buffer.from()会导致文件损坏,javascript,node.js,pdf,base64,backblaze,Javascript,Node.js,Pdf,Base64,Backblaze,我有一个前端,用户可以上传文档(PDF)。它将这些PDF转换为Base64字符串,然后将其发送到microservice,并将其上载到Backblaze B2。此方法在上载例如.jpg文件时工作正常,但在使用.pdf文件进行尝试时,我在Backblaze网站上浏览文件时无法打开此方法: 这是我的前端代码: export const toBase64 = (file: File | Blob) => new Promise((resolve, reject) => { c

我有一个前端,用户可以上传文档(PDF)。它将这些PDF转换为Base64字符串,然后将其发送到microservice,并将其上载到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文档”。我不知道我做错了什么,也不知道如何解决这个问题。

使用这个

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

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

有效。

pdf的mimetype
应用程序不是/pdf
?您的
.replace()
正在尝试替换
image/pdf
。我很惊讶
.from()
没有对此抛出异常。