不完整/部分图像使用节点js下载
incomplete / partial Images are downloaded using node js
我正在使用节点js以标准方式从站点下载图像。
var download = function (uri, filename, callback) {
request.head(uri, function (err, res, body) {
console.log('content-type:', res.headers['content-type']);
console.log('content-length:', res.headers['content-length']);
request(uri).pipe(fs.createWriteStream(filename)).on('close', callback);
});
};
但是当我在 for 循环中运行此代码时,保存的图像已损坏。更要说的是,所有像素都没有下载。仅保存部分图像。
有没有办法解决这个问题?
好吧,我找到了问题的解决方案。原因是在映像完全写入磁盘之前,另一个线程启动,依此类推。为了解决这个问题,我使用 Q-IO 库实现了承诺。
var Apps = require("q-io/http");
var qfs = require("q-io/fs");
var download = function(uri, filename, callback){
Apps.read(uri).then(function(data){
callback(data);
}, function(err){
console.log('err: ' + err);
});
};
download('https://www.google.com/images/srpr/logo3w.png', 'test.jpg', function(data){
console.log('done');
qfs.write("test.jpg", data);
});
但是我没有使用 for 循环,而是使用了自调用函数。
相关文章:
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 节点.js将变量显示为 HTML
- 如何解决'窗口未定义'终端上的节点JS出错
- S3文件上传文件对象使用节点js
- 在节点 js 中使用护照本地模块验证(登录)密码时出错
- 嵌套的promise节点js
- 使用节点JS发送电子邮件
- 节点JS重定向循环
- 起始节点.js用于并行的线程池
- 获取图像节点js的主色
- 调整节点js中的图像大小
- 节点JS express和控制台输出到命令行与浏览器
- 节点JS:时间机器坏了——timekeeper.travel不做时间旅行
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 节点.js快速删除 req.body 不起作用
- 节点.js中的嵌套异步操作
- 如何在核心php应用程序中使用节点js json Web令牌库
- 使用节点js的Bootstrap和Jquery
- 节点.js加密输入/输出类型
- 节点.js在不可能的地方打印“未定义”