【问题标题】:Cant save Read Stream to Amazon S3 using aws2js无法使用 aws2js 将读取流保存到 Amazon S3
【发布时间】: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


    【解决方案1】:

    实际上,我在 GitHub 上的原始帖子中犯了一个错误。 aws2js 在内部更改了将 Stream 上传到 S3 的方式。

    对于 node.js v0.6.9,它本身并不不稳定,但它对 Expect: 100-continue 的处理有问题。

    【讨论】:

      【解决方案2】:

      took up contact with the owner 的项目,他指出,节点处理流的方式在内部发生了变化。他还指出,node0.6.9 目前还不稳定。 我使用 Node 0.6.5(大转变之后的版本)和 aws2js@0.6.4 测试了我的脚本。正如我上面描述的那样,我正在使用代码;有用!耶! :)

      【讨论】:

        【解决方案3】:

        您可能想看看 AwsSum 和示例脚本存储库中的这个示例:

        AwsSum 可以使用 fs.createReadStream() 以您想要的方式流式传输文件,适用于节点 v0.6.x 的所有版本,并且还得到积极维护。

        让我知道你的进展以及是否需要任何帮助。

        免责声明:我是 AwsSum 的作者。 :)

        【讨论】:

          猜你喜欢
          • 2012-11-10
          • 2021-06-22
          • 1970-01-01
          • 2015-12-05
          • 1970-01-01
          • 2013-12-20
          • 1970-01-01
          • 1970-01-01
          • 2016-08-24
          相关资源
          最近更新 更多