如何使用node.js将pass-thru上传到Heroku上的s3?

这是我目前的代码。 我使用快速和knox,我不认为我做任何exception,但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在线编辑器/debugging器,这个相同的代码工作正常,而不是从Heroku。 我猜这跟“ 临时文件系统 ”有关,但这只是一个猜测。 但是我可以使用noir和weavejester的aws sdk在Clojure上使用s3 pass-thru上传工作,所以它在节点中也是可能的。

我偶然发现一个修补程序 – 一旦我将以下内容添加到package.json ,它就开始工作。 否则,Heroku默认为0.4。

 "engines": { "node": "0.8.x" }