我通过node.js运行https服务器。我使用amazon s3来存储一些文件。我使用aws-sdk-js作为节点模块。
这是我用来在服务器上上传内容的代码:
var aws = require('aws-sdk');
aws.config.loadFromPath('./AwsConfig.json');
var s3 = new aws.S3();
s3.putObject({
ACL: 'public-read',
Bucket: BUCKET_NAME,
Key: remoteFilename,
Body: fileBuffer,
ContentType: metaData
}, function (err, obj) {
if(err) console.log(err);
else {
console.log('uploaded file[' + path + '] to [' + remoteFilename + '] as [' + metaData + ']');
}
}).on('httpUploadProgress', function(progress) {
console.log('Upload', progress.loaded, 'of' , progress.total, 'bytes');
});
我正确地获取了文件,但是在上传过程中我无法访问我网站上的任何内容。我相信在上传期间阻止我服务器上的任何活动。我认为这段代码是异步的,但我猜不是。
有关如何防止此阻止的任何建议吗?
提前谢谢。
答案 0 :(得分:0)
只是一个想法,但是你不能将它包装在setTimeout中以使其异步?:
setTimeout(function() {
s3.putObject({
ACL: 'public-read',
Bucket: BUCKET_NAME,
Key: remoteFilename,
Body: fileBuffer,
ContentType: metaData
}, function (err, obj) {
if(err) console.log(err);
else {
console.log('uploaded file[' + path + '] to [' + remoteFilename + '] as [' + metaData + ']');
}
}).on('httpUploadProgress', function(progress) {
console.log('Upload', progress.loaded, 'of' , progress.total, 'bytes');
});
}, 0);
让我知道这是否有效!