我使用aws-sdk模块在nodejs / expressjs中执行一个简单的过程:
下面的代码完美无缺,但只有一次。在文件的第一篇文章之后,节点应用程序不再响应其他帖子或操作(它甚至会停止我使用SetInterval运行的任何进程(方法,10000)。当我尝试发布第二个文件时,它只是挂起。如果我重新启动服务器它只适用于一个帖子。我在WebStorm 5 IDE中运行nodejs-v0.10.9。客户端在文件发布后路由到的代码如下:queueXml:
var fs = require('fs');
var step = require('step');
var AWS = require('aws-sdk');
AWS.config.loadFromPath('./lib/aws/config.json');
var bucketName = 'xxxxxx';
var sqsEndPoint = 'http://xxxx';
exports.queueXml = function(req,res){
var key = getGuid();
step(
function readPostedFile(){
fs.readFile(req.files.postedfile.path, this);
},
function sendToS3(err, data){
if(err) throw err;
var s3Bucket = new AWS.S3({params:{Bucket: bucketName}});
var fileData = {Bucket: bucketName, Key: key, Body: data};
s3Bucket.putObject(fileData,this);
},
function sendSQSMessage(err, path){
if(err) throw err;
var sqs = new AWS.SQS();
var message = {Bucket:bucketName, Key:key};
sqs.sendMessage({QueueUrl:sqsEndPoint,MessageBody:JSON.stringify(message)},this);
},
function end(err, data){
if(err) throw err;
res.send(JSON.stringify(data));
}
)
}