nodejs利用ajax实现网页无刷新上传图片实例代码


Posted in NodeJs onJune 06, 2017

通常情况下上传图片是要通过提交form表单来实现的,但是这又不可避免的产生了网页转。

利用ajax技术和FormData()对象可以有效的解决这个问题

废话不多说 直接上关键代码:

html部分

<div class="form-group">
  <label>File input</label>
  <input type="file" name="file" id="file">
  <p id="result"></p>
  <img id="img" src="">
</div>
<button id="upload" class="btn btn-default">提交</button>

这里注意input标签的 type="file"

js部分:

function uploadFile(){
 var file = document.getElementById("file")
 var formData = new FormData();
 formData.append('file',file.files[0]);
 $.ajax({
  url: '/upload',
  type: 'POST',
  data: formData,
  // async: false,
  cache: false,
  contentType: false,
  processData: false,
  success: function(data){
   if(200 === data.code) {
    $('#result').html("上传成功!");
    $('#img').attr('src',data.data);
   } else {
    $('#result').html("上传失败!");
   }
   console.log('imgUploader upload success');
  },
  error: function(){
   $("#result").html("与服务器通信发生错误");
  }
 });
}

function postPage() {
    var uploada = document.getElementById('upload');
    uploada.addEventListener("click",function () {
      uploadFile();
    },false);
}

window.onload = function () {
  postPage();
}

nodejs部分:

var storage = multer.diskStorage({
  destination: function (req, file, cb){
    cb(null, './public/images')
  },
  filename: function (req, file, cb){
    cb(null, file.originalname)
  }
});
var upload = multer({
  storage: storage
});
router.post('/upload', upload.single('file'), function (req, res, next) {
  var url = 'http://' + req.headers.host + '/images/' + req.file.originalname
  res.json({
    code : 200,
    data : url
  })
});

multer是express官方推荐的文件上传中间件。

文件上传有以下方法

upload.single(‘file'), //适用于单文件上传。
upload.array(‘file',num), //适用于多文件上传,num为最多上传个数,上传文件的数量可以小于num。

同时还提供了混合上传,比如A类文件1个,B类文件2个。官方API有详细说明。

file为上传字段名称,当使用form表单submit方式上传时,必须与表单上传的name属性保持一致。

对上传文件大小限制,名称限制等均可在limits中加上,具体可加属性,请参考官方api。

multer官方文档

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
跟我学Nodejs(三)--- Node.js模块
May 25 NodeJs
Nodejs中自定义事件实例
Jun 20 NodeJs
轻松创建nodejs服务器(5):事件处理程序
Dec 18 NodeJs
基于nodejs+express(4.x+)实现文件上传功能
Nov 23 NodeJs
实例分析nodejs模块xml2js解析xml过程中遇到的坑
Mar 18 NodeJs
简单好用的nodejs 爬虫框架分享
Mar 26 NodeJs
nodejs开发微信小程序实现密码加密
Jul 11 NodeJs
NodeJs实现定时任务的示例代码
Dec 05 NodeJs
NodeJs搭建本地服务器之使用手机访问的实例讲解
May 12 NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 NodeJs
Nodejs实现多文件夹文件同步
Oct 17 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
ajax +NodeJS 实现图片上传实例
Jun 06 #NodeJs
详解Nodejs之静态资源处理
Jun 05 #NodeJs
nodejs集成sqlite使用示例
Jun 05 #NodeJs
详解nodeJS之二进制buffer对象
Jun 03 #NodeJs
深入理解Nodejs Global 模块
Jun 03 #NodeJs
nodejs socket实现的服务端和客户端功能示例
Jun 02 #NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 #NodeJs
You might like
php代码运行时间查看类代码分享
2011/08/06 PHP
php返回字符串中所有单词的方法
2015/03/09 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
PHP针对中英文混合字符串长度判断及截取方法示例
2017/03/31 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
jQuery对象[0]是什么含义?
2010/07/31 Javascript
基于jquery的一个浮动框(扩展性比较好 )
2010/08/27 Javascript
jQuery focus和blur事件的应用详解
2014/01/26 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
javascript与css3动画结合使用小结
2015/03/11 Javascript
在JavaScript中操作数组之map()方法的使用
2015/06/09 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
表单input项使用label同时引用Bootstrap库导致input点击效果区增大问题
2016/10/11 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
JS限制输入框输入的实现代码
2018/07/02 Javascript
js代码规范之Eslint安装与配置详解
2018/09/08 Javascript
Vuejs 实现简易 todoList 功能 与 组件实例代码
2018/09/10 Javascript
jQuery实现查看图片功能
2020/12/01 jQuery
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
python打开url并按指定块读取网页内容的方法
2015/04/29 Python
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
Python yield生成器和return对比代码实例
2020/04/20 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
用CSS3的box-reflect设置文字倒影效果的方法讲解
2016/03/07 HTML / CSS
HTML5实现签到 功能
2018/10/09 HTML / CSS
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
计算机专业毕业生求职信分享
2013/12/24 职场文书
学生周末长期请假条
2014/02/15 职场文书
动画设计系毕业生求职信
2014/07/15 职场文书
感动中国何玥观后感
2015/06/02 职场文书
小学生暑假生活总结
2015/07/13 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书