2012-01-31 46 views
0

在我的node.js应用程序中,我正在上传一个文件(保存到本地文件系统 - >/tmp /),从中创建一个Stream of,将该文件存储到我的S3bucket使用aws2js (Amazon CLI bindings)。这个问题开始于尝试在使用putStream(...)之前将文件初始保存到S3,然后再进行其他操作。 (使用´putFile(filepath)´的作品!)无法保存使用aws2js将流读取到亚马逊S3

我的Bucket中的条目已创建,并且没有给出回调错误。但是没有文件内容被保存,Entry有0个字节。

以下是我的代码;

.... 
var fileStream=fs.createReadStream(file.path), 
    savePath = _makeSavePath(file.name);     

s3.putStream(savePath, fileStream, 'public-read', {'content-type': file.type.mime, 'content-length':file.length}, function (err, s3File) { 
    if (err){ 
     console.error(err); 
     fileGetCB(err); 
     return; 
    } 
    console.log("SAVED TO S3 '"+savePath+"'!!"); 

    //do further manipulations with fileStream 
}); 
... 

我可以保证,那file被初始化,并且在file.path该文件存在。

我之所以使用流而不使用S3.putFile(path)是因为我会进一步操纵文件。通过使用流,我以后可以重用,以便不是每个模块都必须重新读取整个文件(也许它甚至不可能重新使用流,但那不是问题(但)...)

I我对任何方向的任何一方都很有帮助,因为我无法弄清楚为什么这不能在4天的尝试中发挥作用&失败。谢谢!

回答

1

其实,我在我原来的帖子在GitHub上犯了一个错误。 aws2js在内部改变了Stream上传到S3的方式。

至于node.js v0.6.9,它本身不是不稳定的,但它有一个中断处理Expect: 100-continue

0

I took up contact with the owner该项目,他指出,节点处理流的方式在内部已经改变。他还指出,node0.6.9目前不稳定。 我使用Node 0.6.5(大转变后的版本)和[email protected].4 beeing测试了我的脚本。我正在使用代码,正如我在上面所描述的那样;有用!好极了! :)