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