大佬教程收集整理的这篇文章主要介绍了node.js – 使用aws-sdk将gm调整大小的图像上传到s3,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_7@将处理后的图像流式传输到本地磁盘(使用fs.createWriteStream)无问题.
@H_502_7@当我缓冲我的流,s3中的最终图像至少具有预期大小(kb-wisE),但我无法打开该图像.@H_502_7@这是我目前的进展:
@H_502_7@
var request = require('request'); var gm = require("gm"); var AWS = require('aws-sdk'); var mime = require('mime'); var s3 = new AWs.S3(); gm(request('http://www@L_648_6@me-domain.com/some-image.jpg'),"my-image.jpg") .resize("100^","100^") .stream(function(err,stdout,stderr) { var str = ''; stdout.on('data',function(data) { str += data; }); stdout.on('end',function(data) { var data = { Bucket: "my-bucket",Key: "my-image.jpg",Body: new Buffer(str,'binary'),// thats where im probably wrong ContentType: mime.lookup("my-image.jpg") }; s3.client.putObject(data,function(err,res) { console.log("done"); }); }); });@H_502_7@我尝试了一些东西,如创建一个filewritestream和filereadstream,但我认为应该有一些更清洁的更好的解决方案的问题… @H_502_7@编辑:我尝试的第一件事是将Body设置为stdout(来自@AndyD的建议答案):
@H_502_7@
var data = { Bucket: "my-bucket",Body: stdout,ContentType: mime.lookup("my-image.jpg") };@H_502_7@但这会返回以下错误:
@H_502_7@
CAnnot determine length of [object Object]'@H_502_7@EDIT2:
@H_502_7@> nodeversion:0.8.6(我也尝试了0.8.22和0.10.0)
> aws-sdk:0.9.7-pre.8(今天安装)
@H_502_7@
{ [Error: CAnnot determine length of [object Object]] message: 'CAnnot determine length of [object Object]',object: { _handle: { writeQueueSize: 0,owner: [Circular],onread: [Function: onread] },_pendingWriteReqs: 0,_flags: 0,_connectQueueSize: 0,destroyed: false,errorEmitted: false,bytesRead: 0,_bytesDispatched: 0,allowHalfOpen: undefined,writable: false,readable: true,_paused: false,_events: { close: [Function],error: [Function: handlerr] } },name: 'Error' }
gm(request('http://www@L_648_6@me-domain.com/some-image.jpg'),stderr) { var data = { Bucket: "my-bucket",Body: stdout ContentType: mime.lookup("my-image.jpg") }; s3.client.putObject(data,res) { console.log("done"); }); }); });@H_502_7@有关更多信息,请参阅这些release notes. @H_502_7@如果流/管道不起作用,那么这样的东西可能会将所有内容加载到内存中,然后上传.在这种情况下,我觉得这个限制在4Mb.
@H_502_7@
var buf = new Buffer(''); stdout.on('data',function(data) { buf = Buffer.concat([buf,data]); }); stdout.on('end',Body: buf,ContentType: mime.lookup("my-image.jpg") }; s3.client.putObject(data,res) { console.log("done"); }); });
以上是大佬教程为你收集整理的node.js – 使用aws-sdk将gm调整大小的图像上传到s3全部内容,希望文章能够帮你解决node.js – 使用aws-sdk将gm调整大小的图像上传到s3所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。