5
這是我現在的代碼。我使用express和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
});
});
此相同的代碼工作正常,甚至從cloud9在線編輯器/調試器,只是沒有從Heroku的。我猜這與「ephemeral file system」有關,但這只是一個猜測。但是我可以使用noir和weavejester's aws sdk在Clojure上使用s3 pass-thru上傳來在Heroku上工作,所以它在節點中也是可能的。