目前,我正在使用@ google-cloud / storage NPM软件包将文件直接上传到Google Cloud
Storage存储桶。这需要一些技巧,因为我只有图像的base64编码的字符串。我必须:
我想避免将文件完全存储在文件系统中,因为我正在使用Google App
Engine,并且如果由于某种原因删除操作不起作用,我不想使文件系统超载/将垃圾文件留在那里。这是我的上传脚本现在的样子:
// Convert the base64 string back to an image to upload into the Google Cloud Storage bucket
var base64Img = require('base64-img');
var filePath = base64Img.imgSync(req.body.base64Image, 'user-uploads', 'image-name');
// Instantiate the GCP Storage instance
var gcs = require('@google-cloud/storage')(),
bucket = gcs.bucket('google-cloud-storage-bucket-name');
// Upload the image to the bucket
bucket.upload(__dirname.slice(0, -15) + filePath, {
destination: 'profile-images/576dba00c1346abe12fb502a-original.jpg',
public: true,
validation: 'md5'
}, function(error, file) {
if (error) {
sails.log.error(error);
}
return res.ok('Image uploaded');
});
无论如何,是否可以直接上传图像的base64编码字符串,而不必将其转换为文件然后使用路径上传?
我认为,解决方案是使用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
功能,并建议您也这样做。最后,我们会附上几个事件,说明上传何时完成以及何时出错。
目前,我正在使用@google-cloud/Storage NPM包将文件直接上传到Google云存储桶中。这需要一些技巧,因为我只有图像的base64编码字符串。我必须: 解码字符串 另存为文件 将文件路径发送到下面的脚本以上传到Google云存储 删除本地文件 我希望避免将文件存储在文件系统中,因为我使用的是Google App Engine,而且如果删除操作因任何原因无法工作,我不希望文件系
使用python sdk将JSON字符串(在内存中创建,而不是从文件中读取)上载到azure blob存储的最佳方式是什么? 我从医院的医生那里了解到https://pypi.org/project/azure-storage-blob/我可以通过执行以下操作将文件上载到azure blob存储。 但是我很难找到任何直接上传字符串的例子。 可以直接上传字符串吗?如果可以,在python中是如何完成
问题内容: 昨天我做了一个深夜的编码会议,并创建了一个小的node.js / JS(实际上是CoffeeScript,但是CoffeeScript只是JavaScript,所以可以说是JS)应用程序。 目标是什么: 客户端(通过socket.io)将canvas datauri(png)发送到服务器 服务器将图像上传到亚马逊s3 步骤1完成。 服务器现在有一个字符串 我的问题是: 将数据“流” /
我让转换器在这里工作