在为NodeJS使用aws-sdk模块时,我注意到上传的时间比我上传的大小要长。对于100kB的数据,上传需要2秒钟。
下面的函数接受base64编码的png,将其转换为缓冲区并上传到S3。
var getBufferFromPngBase64 = function(pngBase64) {
var dataBase64, dataBinary;
dataBase64 = pngBase64.replace(/^data:image\/png;base64,/, '');
dataBase64 = dataBase64.replace(/ /g, '+');
dataBinary = new Buffer(dataBase64, 'base64');
return dataBinary;
};
var uploadAwsSdk = function(pngData) {
var start = new Date().getTime(),
pngBuffer = getBufferFromPngBase64(pngData);
s3Obj.putObject({
ContentType: 'image/png',
Body: pngBuffer,
ContentEncoding: 'base64',
ContentLength: pngBuffer.length,
Key: "foo.png"
}, function(err, data) {
//done
});
};
我试过了
我认为这只是标准的慢S3时间,但是当它的1字节文件上传时速度要快得多,所以我不确定发生了什么。这对S3来说是正常的,还是我使用NodeJS来做我不应该做的事情?