5
ここに私の現在のコードがあります。私は急行とknoxを使用していますが、私は何か異常なことはしていないと思っていますが、s3.putFile
は400のステータスコードに応答していますが、ヌルエラーであり、ファイルはアップロードされません。node.jsを使ってHerokuのs3にパススルーアップロードを行うにはどうすればいいですか?
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オンラインエディタ/デバッガから正常に動作します。私はそれが "ephemeral file system"と関係があると推測していますが、それはちょうど推測です。しかし、私はClojureのHerokuでs3 pass-thruアップロードをnoirとweavejester's aws sdkを使って得ることができたので、ノードでも可能でなければなりません。