哪种方式更好地把文件从服务器的亚马逊S3?

我想通过restify(或express)提供一个rest服务API,

  • 服务的责任是让客户谁可以把audio/ MPEG或其他
    二进制文件到我们的服务器,然后validation身份validation,如果
    通过,将文件放到amazon s3上,然后检查s3客户端
    响应statusCode,如果s3客户端响应statusCode == 200,那么
    出头

解决scheme1 :使用请求streampipe道将文件放到亚马逊knox

var stream = s3.put(filepath, {options}); serverReq.pipe(stream); stream.on('response', function(err, s3Res) { if (err) { console.log(err); } if (s3Res.statusCode == 200) { store file infos on DB} } 

解决方法2 :使用formdiable和fs预先在服务器本地临时文件夹中存储文件,然后通过knox将文件放到amazon中

 (after pre store file on server local temp folder) s3.putFile(sourcePath, destPath, {options}, function(err, _res) { (clear local files from local temp folder) if (err) { return next(err); } if (_res.statusCode == 200) {console.log('save on %s', s3.url(dest))} res.send(_res.statusCode); return next(); }); 

解决scheme1和解决scheme2或其他更好的方法之间哪种方式更好? 在这里有什么性能问题需要知道?

根据服务器负载和可用带宽,磁盘是最大的潜在瓶颈。 我会说解决scheme1直接stream式传输文件,不存储到物理媒体。 确保不要尝试将整个对象存储到内存中,否则可能会遇到系统资源问题。