5

これが私の現在のコードです。Express と knox を使用しており、異常なことはしていないと思いますs3.putFileが、400 ステータス コードは返されますが null エラーが返され、ファイルがアップロードされません。

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
    });
});

この同じコードは、Heroku からではなく、cloud9オンライン エディター/デバッガーからでも正常に動作します。「エフェメラルファイルシステム」と関係があるのではないかと推測していますが、それは単なる推測です。ただし、 noirweavejester の aws sdkを使用して Clojure の Heroku で s3 パススルー アップロードを動作させることができたので、ノードでも可能である必要があります。

4

1 に答える 1

2

私は修正に出くわしました—以下を追加するとpackage.json、それは機能し始めました。それ以外の場合、Herokuのデフォルトは0.4です。

"engines": {
  "node": "0.8.x"
}
于 2012-10-27T21:37:24.623 に答える