我已经阅读了与此相关的所有其他答案。但这对我不起作用,或者我只是不明白一些事情。请帮忙。
我正在从客户端发送'image/png'base64字符串。它是这样的:“Ivborw0kggoaaansuheugaaaaaaaaaaa……”
在云函数我有方法:
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);
}
有什么不对劲?
在你的逻辑中,你有:
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);
}
我相信您的目的是将Base64字符串解码为其二进制数据表示形式。我不知道你从哪里得到的代码片段,也不知道它到底做了什么。。。但我可以向您保证,它与base64解码无关。
Node.js有一些功能强大的库,可以代表您执行Base64解码。例如,缓冲区
类。
let buff = new Buffer(data, 'base64');
将数据中的Base64字符串解码为字节缓冲区。
值得一读的优秀文章是Node.js中Base64字符串的编码和解码。
问题内容: 我已经阅读了使用Google AppEngine将图像发送到Google云存储中的问题。 但是,答案中的代码表明文件将首先上传到Blobstore,因此文件不能超过32MB。 如何将大文件直接上传到Google Cloud Storage? 我已经检查了官方文档Upload Objects ,但是我仍然不知道如何编写表格来发布大文件。 问题答案: 从1.7.0开始 将直接上传到Goog
我正在尝试建立一个基于python的基本谷歌应用引擎站点,允许用户将文件上传到谷歌云存储(主要是图像) 我已经阅读了JSON API和GCS客户端库概述(以及blobstore等)的文档,但仍然没有很好地了解哪种方法是最好的以及它们之间的关系。如果有人能概述一下,或者给我指出一些我可以查看的资源,那就太好了 此外,任何相关的示例代码都会非常有用。我已经能够在此处运行上载示例,但不确定它们是否对应用
我使用以下链接使用谷歌云存储: 谷歌云 我想上传一个对象,使用上面的API中给出的插入函数。我使用的代码如下: 但我得到的错误如下: 致命错误:未捕获的异常“Google_ServiceException”,消息为“调用POST时出错”https://www.googleapis.com/storage/v1beta1/b/mybucket/o: (400)第66行的/home/www/publi
我读了问题从发送图像到谷歌云存储使用谷歌应用程序引擎。 但是,文件将首先上载到Blobstore的答案中的代码,因此该文件不能超过32MB。 如何将大文件直接上传到谷歌云存储? 我已经检查了官方文件上传对象,但我仍然不知道如何编写表单来发布一个大文件。
当将图像/视频上传到Google云存储时,这是获得blob_key的正确方法吗? 文档要求使用创建blob_key。文件名从何而来?在对象存储在GCS后调用的上传处理程序的post函数中是否应该包含此代码? 此外,从谷歌文档中,我对这段代码的作用或与图片的关系感到困惑:
我试图上传图像到我的谷歌云存储中的现有桶。当我去检查的时候,图像文件被成功上传,但是返回的下载网址是 FilePath是图像文件 BloName是一个随机图像名称 上传Creds是我的credintials.json文件 为什么