使用node.js迁移到s3存储
Moving to s3 storage with node.js
我正准备将一个node.js应用程序移动到生产环境中(我正在使用Heroku)。用户通过url向网站添加图片。现在它们只是保存在服务器上-我想将存储移动到s3,但我有一些困难。
这个想法是先将图像保存到磁盘,然后上传它,但是我正在努力找到一种方法来通知当文件已经完成写入磁盘。它似乎没有使用典型的节点回调样式。
下面是现在的代码。我正在使用请求节点模块,这可能会使事情复杂化,而不是简化它们: requestModule(request.payload.url).pipe(fs.createWriteStream("./public/img/submittedContent/" + name));
// what do I do here?
fs.readFile("./public/img/submittedContent/" + name, function(err, data){
if (err) { console.warn(err); }
else {
s3.putObject({
Bucket: "submitted_images",
Key: name,
Body: data
}).done(function(s3response){
console.log("success!");
reply({message:'success'});
}).fail(function(s3response){
console.log("failure");
reply({message:'failure'});
});
}
});
任何建议将不胜感激。谢谢!
尝试监听可写流上的finish
事件:
requestModule(request.payload.url).pipe(fs.createWriteStream("./public/img/submittedContent/" + name)).on('finish', function(){
// do stuff with saved file
});
除非要修改图像,否则不应该上传到Heroku,而应该直接上传到S3。
参见在Node.js中直接向S3上传文件
相关文章:
- Amazon S3 REST API大小不正确
- 将作用域存储在JSON中
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- javascript将对象数组转换为字符串以存储在s3中
- 将图像从 Web 应用程序上传到 S3,而无需将其存储在服务器中
- 如何为 Amazon S3 中存储的每个映像分配默认目录
- S3 循环访问存储桶/文件夹/文件
- 如何使用 Node/Angular/JavaScript 将多个图像上传到 Amazon AWS S3 存储桶
- 错误:FS.Store.S3 您必须指定“存储桶”选项(meteor.js 和 s3)
- 检查 s3 存储桶中是否存在单个对象
- 如何使用JS SDK设置将对象上传到S3的存储类
- 可以在amazon s3上存储json
- 直接向s3 / client上传文件.使用这种方法在s3存储桶中存储未使用的文件是否存在问题?
- Amazon s3存储视频,然后在我的网站上输出
- 流星css -s3错误与CollectionFS "FS.TempStore.未设置存储空间
- 无法根据 S3 存储桶的创建日期创建排序数组
- 使用node.js迁移到s3存储
- 如何将value 's文件上传器与Amazon S3存储结合使用