Ecco il mio codice corrente. Sto usando express e knox, e non penso di fare nulla di insolito, ma s3.putFile
sta rispondendo a 400 codice di stato ma errore nullo, e il file non viene caricato.Come eseguire i caricamenti pass-through su s3 su Heroku con node.js?
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
});
});
Questo stesso codice funziona bene anche dal cloud9 editor di linea/debugger, non solo da Heroku. Immagino che abbia qualcosa a che fare con lo "ephemeral file system", ma è solo una supposizione. Tuttavia sono stato in grado di ottenere upload pass-through s3 per lavorare su Heroku in Clojure usando noir e weavejester's aws sdk, quindi deve essere possibile anche nel nodo.