在firebase存储的web sdk中,您可以使用upload an image from Blob data。我有一个nodeJS应用程序,想要将图片从blob数据上传到我的存储桶中。在文档中,如果运行节点服务器环境,建议使用admin SDK。但我在firbase storage admin documentation中找不到这个功能。
下面是我的代码:
const admin = require('firebase-admin');
const serviceAccount = require(`./credentials/my-keyfile.json`);
const app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
});
const storage = app.storage();
// Get Blob data from an external ImageUrl
const axios = require("axios");
const getBlobFromUrl = (url) => {
const response = await axios.get(url, { responseType: "blob" });
return response.data;
}
const blobData = getBlobFromUrl("https://images.unsplash.com/photo-1591476315349-faa1c8e6f567?ixlib=rb-1.2.1&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max")
// MY QUESTION -> how can i upload that blob data to my storage?发布于 2021-12-17 21:49:34
我最近也在尝试类似的做法,从Node服务器(使用Firebase Admin SDK)向Firebase Storage写入内存中的文件。
我意识到我需要使用Google Cloud Storage的Node API来解决这个问题(在docs中提到过)。这是使用谷歌云存储进行流式传输的相关文档页面:https://cloud.google.com/storage/docs/streaming#storage-stream-upload-object-nodejs。
以下是基本步骤:
storageBucket地址(例如gs://APP-NAME.appspot.com/),您可以从您的Firebase存储控制台获取该地址。另外,获取适当的Firebase存储和存储桶JS对象。遵循https://firebase.google.com/docs/storage/admin/start因此,按照上面的文档,您将执行如下操作:
// Create a reference to a file object.
// myBucket is the bucket obtained in step 1 above
const file = myBucket.file("directoryName/imageName.png");
// step 2: get ReadableStream from Blob
const stream = blobData.stream();
// step 3: asynchronously pipe/write to file in cloud
async function streamFileUpload() {
stream.pipe(file.createWriteStream()).on('finish', () => {
// The file upload is complete
});
}
streamFileUpload().catch(console.error);在此之后,您将看到您的文件上传到directoryName/imageName.png下的Firebase存储。
发布于 2020-06-25 02:26:56
您在uploading an image with Blob data上发布的第一个链接包含有关如何使用client sdk执行此操作的信息。
当您使用Admin SDK时,使用案例是后端,例如云函数。您在帖子中显示的内容将用于此用例。
有关如何使用客户端sdk上传图像的实现,请查看一些快速入门指南以及代码实验室。
如果您主要使用Blob,您可以查看一些库,如busboy,然后发送HTTP请求。
https://stackoverflow.com/questions/62560652
复制相似问题