详解node.js 下载图片的 2 种方式


Posted in Javascript onMarch 02, 2018

具体代码如下所示:

var request=require("request");
var fs=require("fs");
function download1(url,filename,fn){
request(url).pipe(fs.createWriteStream(filename).on("close",function(err,res){
if(err){
console.log(err);
}else{
fn&&fn();
}
}))
}
function download2(url,filename,fn){
request.get({uri:url, encoding:'binary'},function(err,res){
if(!err){
fs.writeFile(filename,res.body,"binary",function(err,res){
if(!err){
fn&&fn();
}else{
console.log(err);
}
})
}
})
}

ps:下面看下nodejs 下载远程图片的实现代码,具体代码如下所示:

var express = require('express');
var request = require('request');
var http = require('http');
var url = require('url');
var fs = require("fs");
var router = express.Router();
/* GET home page. */
router.get('/', function (req, res, next) {
  var url = "http://www.valu.cn/images/1.gif";
  //request('http://www.valu.cn/images/1.gif').pipe(fs.createWriteStream('./public/upload/downImg/logonew.png'));
  var req = http.get(url, function (res) {
    var imgData = "";
    res.setEncoding("binary"); //一定要设置response的编码为binary否则会下载下来的图片打不开
    res.on("data", function (chunk) {
      imgData += chunk;
    });
    res.on("end", function () {
      fs.writeFile("./public/upload/downImg/logonew.png", imgData, "binary", function (err) {
        if (err) {
          console.log("保存失败");
        }
        console.log("保存成功");
      });
    });
    res.on("error", function (err) {
      console.log("请求失败");
    });
  });
  req.on('error', function (err) {
    console.log("请求失败2" + err.message);
  });
  res.render('index', {title: '首页2'});
});
module.exports = router;

总结

以上所述是小编给大家介绍的node.js 下载图片的 2 种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
Node.js开源应用框架HapiJS介绍
Jan 14 Javascript
JS的数组迭代方法
Feb 05 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
如何以Angular的姿势打开Font-Awesome详解
Apr 22 Javascript
Angular父子组件通过服务传参的示例方法
Oct 31 Javascript
微信小程序登录态和检验注册过没的app.js写法
May 22 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
Mar 26 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
May 14 Javascript
vue使用require.context实现动态注册路由
Dec 25 Vue.js
vue2.0+vue-dplayer实现hls播放的示例
Mar 02 #Javascript
详解vue2.0+vue-video-player实现hls播放全过程
Mar 02 #Javascript
vue2.0 + element UI 中 el-table 数据导出Excel的方法
Mar 02 #Javascript
浅谈FastClick 填坑及源码解析
Mar 02 #Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 #Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 #Javascript
Element-ui table中过滤条件变更表格内容的方法
Mar 02 #Javascript
You might like
在apache下限制每个虚拟主机的并发数!!!!
2006/10/09 PHP
php编写一个简单的路由类
2011/04/13 PHP
Thinkphp实现站点静态化的方法详解
2017/03/21 PHP
javascript读取Xml文件做一个二级联动菜单示例
2014/03/17 Javascript
javascript实现密码验证
2015/11/10 Javascript
Jquery中request和request.form和request.querystring的区别
2015/11/26 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
实现隔行换色效果的两种方式【实用】
2016/11/27 Javascript
JavaScript中捕获/阻止捕获、冒泡/阻止冒泡方法
2016/12/07 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
jquery实现图片跟随鼠标的实例
2017/10/17 jQuery
JS二分查找算法详解
2017/11/01 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
详解Vue的watch中的immediate与watch是什么意思
2019/12/30 Javascript
JS 数组基本用法入门示例解析
2020/01/16 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
python集合类型用法分析
2015/04/08 Python
Pytorch根据layers的name冻结训练方式
2020/01/06 Python
如何用python 操作zookeeper
2020/12/28 Python
"火柴棍式"程序员面试题
2014/03/16 面试题
医学类导师推荐信范文
2013/11/19 职场文书
语文教育专业应届生求职信
2013/11/23 职场文书
白酒市场开发计划书
2014/01/09 职场文书
企业法人授权委托书
2014/09/25 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
2015年小学二年级班主任工作总结
2015/05/21 职场文书
怎样写工作总结啊!
2019/06/18 职场文书
争做文明公民倡议书
2019/06/24 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
mysql timestamp比较查询遇到的坑及解决
2021/11/27 MySQL
mysql中数据库覆盖导入的几种方式总结
2022/03/25 MySQL
Java实现带图形界面的聊天程序
2022/06/10 Java/Android
JS class语法糖的深入剖析
2022/07/07 Javascript