这是我当前的代码。我正在使用 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 不能。我猜它与“临时文件系统”有关,但这只是一个猜测。但是,我能够使用noir和weavejester 的 aws sdk让 s3 pass-thru 上传在 Clojure 中的 Heroku 上工作,因此它在节点中也必须是可能的。