【发布时间】:2019-12-17 09:13:11
【问题描述】:
我已经阅读了与此相关的所有其他答案。但这对我不起作用,或者我只是不明白一些事情。请帮忙。
我正在从客户端发送 'image/png' base64 字符串。它是这样的:“iVBORw0KGgoAAAANSUhEUgAAAgAAAA.......”
在 Cloud Functions 上我有方法:
exports.uploadImage = functions.https.onCall((data, context) => {
var bytes = data.imageData;
uploadFile(bytes);
})
function _base64ToArrayBuffer(binary_string) {
var len = binary_string.length;
var bytes = new Uint8Array(len);
for (var i = 0; i < len; i++) {
bytes[i] = binary_string.charCodeAt(i);
}
return new Uint8Array(bytes);
}
async function uploadFile(data) {
const imageBuffer = _base64ToArrayBuffer(data)
const fielName = 'img/' + UTIL.getRandomString(20) + '.png'
const fileUpload = bucket.file(fielName)
const uploadStream = fileUpload.createWriteStream({
metadata: {
contentType: 'image/png'
}
});
uploadStream.on('error', (err) => {
console.log(err);
return;
});
uploadStream.on('finish', () => {
console.log('Upload success');
bucket.file(fielName).makePublic();
});
uploadStream.end(imageBuffer);
}
因此,我在 Firebase 存储中保存了一些 35Kb 的奇怪文件(源图像为 14kb) 此文件的图像未显示,并且没有指向创建的图像的链接。
有什么问题?
【问题讨论】:
标签: node.js firebase google-cloud-functions google-cloud-storage