【问题标题】:How to do pass-thru uploads to s3 on Heroku with node.js?如何使用 node.js 在 Heroku 上通过传递上传到 s3?
【发布时间】:2012-10-17 08:09:07
【问题描述】:

这是我当前的代码。我正在使用 express 和 knox,我认为我没有做任何不寻常的事情,但 s3.putFile 正在响应 400 状态代码但为空错误,并且文件没有上传。

var express = require('express');
var knox = require('knox');

var app = express();
app.use(express.bodyParser());

var s3 = knox.createClient({
    key: process.env.AWS_ACCESS_KEY_ID,
    secret: process.env.AWS_SECRET_ACCESS_KEY,
    bucket: process.env.S3_BUCKET_NAME
});

app.post('/upload', function(req, res, next) {
    var photo = req.files.photo;
    var s3Headers = {
      'Content-Type': photo.type,
      'x-amz-acl': 'public-read'
    };

    s3.putFile(photo.path, photo.name, s3Headers, function(err, s3response){
      //handle, respond
    });
});

即使在cloud9 在线编辑器/调试器中,同样的代码也能正常工作,只是在 Heroku 中不行。我猜它与“ephemeral file system”有关,但这只是一个猜测。但是,我能够使用 noirweavejester's aws sdk 在 Clojure 中的 Heroku 上进行 s3 pass-thru 上传,因此它在节点中也必须是可能的。

【问题讨论】:

    标签: node.js heroku amazon-s3 knox-amazon-s3-client


    【解决方案1】:

    我偶然发现了一个修复程序——将以下内容添加到package.json 后,它就开始工作了。否则 Heroku 默认为 0.4。

    "engines": {
      "node": "0.8.x"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-23
      • 1970-01-01
      • 2012-05-17
      • 2014-07-14
      • 2015-10-29
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多