我认为,解决方案是使用
file.createWriteStream该
bucket.upload功能包装在Google Cloud Node
SDK中的功能。
我对流媒体的经验很少,所以如果不能立即使用,请尝试忍受。
首先,我们需要获取base64数据并将其放入流中。为此,我们将包括该
stream库,从base64数据创建一个缓冲区,然后将该缓冲区添加到流的末尾。
var stream = require('stream');var bufferStream = new stream.PassThrough();bufferStream.end(Buffer.from(req.body.base64Image, 'base64'));有关解码base64和创建流的更多信息
然后,我们将把流传输到
file.createWriteStream函数创建的写入流中。
var gcs = require('@google-cloud/storage')({ projectId: 'grape-spaceship-123', keyFilename: '/path/to/keyfile.json'});//Define bucket.var myBucket = gcs.bucket('my-bucket');//Define file & file name.var file = myBucket.file('my-file.jpg');//Pipe the 'bufferStream' into a 'file.createWriteStream' method.bufferStream.pipe(file.createWriteStream({ metadata: { contentType: 'image/jpeg', metadata: { custom: 'metadata' } }, public: true, validation: "md5" })) .on('error', function(err) {}) .on('finish', function() { // The file upload is complete. });信息上
file.createWriteStream,文件文档,
bucket.upload以及
bucket.upload在Node
SDK方法的代码。
因此,上述代码的工作方式是定义要放入文件的存储桶,然后定义文件和文件名。我们未在此处设置上传选项。然后,
bufferStream我们将刚刚创建的变量通过管道传递到
file.createWriteStream我们之前讨论的方法中。在这些选项中,我们定义元数据和您要实现的其他选项。直接查看Github上的Node代码非常有帮助,以了解它们如何分解
bucket.upload功能,并建议您也这样做。最后,我们会附上几个事件,说明上传何时完成以及何时出错。



