Node.js 使用云功能创建pdf文件并将其上载到firebase存储?(可以本地上传文件,但不能从云功能上传)

Node.js 使用云功能创建pdf文件并将其上载到firebase存储?(可以本地上传文件,但不能从云功能上传),node.js,google-cloud-functions,firebase-storage,pdfkit,Node.js,Google Cloud Functions,Firebase Storage,Pdfkit,我需要使用云函数创建PDF文件并将其上载到firebase存储。 我已经创建了pdfBase64string,只需要将此字符串pdf保存到存储器中,但找不到执行此操作的信息。 我尝试了许多不同的方法,但都被卡住了,因为Google answers终于结束了。请注意,您使用的是云存储,而不是Firebase存储库。您可以通过以下方式上载: const { Storage } = require("@google-cloud/storage"); const storage =

我需要使用云函数创建PDF文件并将其上载到firebase存储。 我已经创建了pdfBase64string,只需要将此字符串pdf保存到存储器中,但找不到执行此操作的信息。
我尝试了许多不同的方法,但都被卡住了,因为Google answers终于结束了。

请注意,您使用的是云存储,而不是Firebase存储库。您可以通过以下方式上载:

const { Storage } = require("@google-cloud/storage");
const storage = new Storage({
keyFilename: "./xxx-path-to-key(locally).json",
projectId: "my project ID",
});

exports.get_data = functions.https.onRequest(async (req, res) => {

const pdf = async () => {
const doc = new PDFDocument();
doc.text("Hello, World!");
doc.end();
return await getStream.buffer(doc);
};

const pdfBuffer = await pdf();
const pdfBase64string = pdfBuffer.toString("base64"); //getting string which I want to send to storage like pdf file

const bucketName = "gs://path-to-storage.com/"
let filename = "test_file.pdf" //some locally pdf file (but can't save locally while using cloud functions) 

const uploadFile = async () => {
// Uploads a local file to the bucket
await storage.bucket(bucketName).upload(filename, { //this one fine works for locally uploading
  metadata: {
    cacheControl: "public, max-age=31536000",
    contentType: "application/pdf",
  },
});

console.log(`${filename} uploaded to ${bucketName}.`);
};

uploadFile();

})

现在,

  • 要能够从云功能访问Firebase存储,您需要将Firebase编辑器角色添加到云功能服务帐户
  • 或者,您可以使用Firebase功能来存储Firebase

  • 云存储库与Firebase存储库不同。

    如果您仍然存在问题,请提供错误和跟踪。您好!感谢您的回答,它几乎完成了,但仍然有另一个错误“字符串与格式'base64'不匹配:找到无效字符(存储/无效格式)”
    var-storageRef=firebase.storage().ref();var ref=storageRef.child(“file.pdf”);const doc=新的PDFDocument();文本(“你好,世界!”);doc.end();const pdfBuffer=wait getStream.buffer(doc);const pdfBase64string=pdfBuffer.toString(“base64”);ref.putString(pdfBase64string,“base64”,“contentType:“application/pdf”})。然后(函数(snapshot){console.log(“上载了base64字符串!”)})
    我找到了一个相关的,您可能会觉得有用的。
    // Create a root reference
    var storageRef = firebase.storage().ref();
    // Create a reference to 'mountains.pdf'
    var ref = storageRef.child('mountains.pdf');
    // Base64 formatted string
    var message = '5b6p5Y+344GX44G+44GX44Gf77yB44GK44KB44Gn44Go44GG77yB';
    ref.putString(message, 'base64').then(function(snapshot) {
      console.log('Uploaded a base64 string!');
    });