【发布时间】:2012-01-31 22:01:24
【问题描述】:
在我的 node.js 应用程序中,我正在上传一个文件(保存到本地文件系统 -> /tmp/),我从中创建一个 Stream,以使用 aws2js (Amazon CLI bindings) 将该文件存储到我的 S3bucket 中。问题首先尝试使用putStream(...) 将文件最初保存到S3,然后再进行任何进一步的操作。 (使用´putFile(filepath)´ 有效!)
我的 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) 的原因是我将进一步操作文件。通过使用流,我以后可以重用,这样不是每个模块都必须重新读取整个文件(也许它甚至不可能“重用”流,但这不是问题(还)..)
我对任何方向的任何人都非常有帮助,因为我无法弄清楚为什么这在 4 天的尝试和失败中不起作用。谢谢!
【问题讨论】:
标签: javascript node.js file-upload stream amazon-s3