jap*_*ott 15 javascript stream amazon-s3 node.js
在我的node.js应用程序中,我正在使用gm(一个graphicsmagick包装器)和aws2js(amazon cli包装器).问题是亚马逊需要知道内容长度,以便我可以将流放在S3上.
我正在将图像上传到我的应用,通过创建流来读取该文件:
var fileStream=fs.createReadStream(file.path)
Run Code Online (Sandbox Code Playgroud)
我将该文件传递给gm,调整它的大小,然后告诉它传输该文件.然后我想把那个流放到aws:
gm( fileStream, "some.png" ).
identify({bufferStream: true}, function(err, info) {
this.stream("png", function (err, stdout, stderr) {
if (err){console.log(err);cb(err);return;}
aws.S3.putStream(path, stdout, 'public-read', {'content-length': ?????, 'content-type': 'image/png'}, function (err, result) {
.....
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
问题是亚马逊需要知道放置流的内容长度(不是库).AWS不支持分块流.
有谁知道我如何确定流的内容长度?或者唯一的解决方案是将tmp写入磁盘,将文件作为流读取,然后将其与临时文件的内容长度一起放入亚马逊?
这取决于您如何进行上传。我正在使用express.js,并且从 req.files 对象中获取长度,例如 req.files.[文件输入名称].length。
我实际上正在尝试做同样的事情,但我在 aws2js 识别流时遇到问题。如果你能正常工作请告诉我。
| 归档时间: |
|
| 查看次数: |
8940 次 |
| 最近记录: |