如何使用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" }
- 如何使用getSignedUrl()将Node.js fluent-ffmpeg屏幕截图的目标文件夹设置为您的AWS S3存储桶?
- AWS S3 NodeJS禁止或连接rest
- AWS Lambda copyObject“在完成请求之前退出进程”
- 如何使用Node.js将文件直接上传到Amazon Cloud Front
- 无法使用node.js将Blobfile upload到S3
- 从AWS Lambda Node.JSstream式传输到S3
- AWS S3 JavaScript SDK getSignedUrl仅返回基本path
- 使用强大的和(knox或aws-sdk)在Node.js上传文件到S3
- Nodejs AWS SDK S3生成预留的URL