Ven*_*ona 6 node.js google-cloud-functions firebase-storage
我无法使用云函数将字节数组格式的图像文件上传到 firestore。下面的代码在本地使用app.listen()工作正常,但是当我尝试使用导出功能时,它不起作用
const functions = require('firebase-functions');
const { Storage } = require('@google-cloud/storage');
const express = require('express');
var app = express();
var fs = require('fs');
// Your Google Cloud Platform project ID
const projectId ='<project-Id>';
// Creates a client
const storage = new Storage({
projectId: projectId,
keyFilename: '<>'
});
const bucket = storage.bucket("<bucket-name>");
// Byte aray to Image
function saveImage(filename, data) {
console.log("inside saveImage", data.length);
var myBuffer = new Buffer.alloc(data.length);
for (var i = 0; i < data.length; i++) {
myBuffer[i] = data[i];
}
console.log(myBuffer)
fs.createWriteStream(filename, myBuffer, 'binary', function (err) {
console.log("inside writeFile");
if (err) {
console.log('error inside fs', err);
} else {
console.log("The file was saved!");
}
});
}
saveImage("image1.png", result);
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept");
next();
});
exports.UploadImage = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)
有人可以帮我吗?提前致谢
经过一番阅读后,图像上传到 firebase 存储中。我意识到,我们可以使用Uint8Array()直接上传字节数组,而不是将字节数组转换为图像, 它会自动将其转换为图像并上传到 firebase 存储中。下面是修改后的代码。
const functions = require('firebase-functions');
const { Storage } = require('@google-cloud/storage');
const express = require('express');
var app = express();
// Your Google Cloud Platform project ID
const projectId ='<project-Id>';
// Creates a client
const storage = new Storage({
projectId: projectId,
keyFilename: './servicekey.json'
});
const bucket = storage.bucket("<bucket-name>");
const options = {
action: 'read',
expires: '03-17-2025'
};
// storing Byte array
function saveImage(filename, data) {
var imageBuffer = new Uint8Array(data);
var file = bucket.file(filename);
file.save(imageBuffer, {
metadata: { contentType: 'image/png' },
},
((error) => {
if (error) {
console.log('error')
}
file.getSignedUrl(options)
.then(results => {
const url = results[0];
console.log(`The signed url for ${imageName} is ${url}.`);
})
}));
}
saveImage("image1.png", <byte-Array as input>);
app.use(function (req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept");
next();
});
exports.UploadImage = functions.https.onRequest(app);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8106 次 |
| 最近记录: |