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异步回调的优雅处理方法
Sep 25 NodeJs
NodeJS学习笔记之Connect中间件应用实例
Jan 27 NodeJs
PHP和NodeJs开发的应用如何共用Session
Apr 16 NodeJs
nodejs实现获取某宝商品分类
May 28 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
在windows上用nodejs搭建静态文件服务器的简单方法
Aug 11 NodeJs
nodejs超出最大的调用栈错误问题
Dec 27 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
nodejs+express最简易的连接数据库的方法
Dec 23 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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
微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
2016/01/12 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
一段多浏览器的&quot;复制到剪贴板&quot;javascript代码
2007/03/27 Javascript
ASP.NET中基于JQUERY的高性能的TreeView补充
2011/02/23 Javascript
JS分割字符串并放入数组的函数
2011/07/04 Javascript
jQuery判断checkbox是否选中的小例子
2013/12/02 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
HTML页面登录时的JS验证方法
2014/05/28 Javascript
jQuery中:reset选择器用法实例
2015/01/04 Javascript
js中键盘事件实例简析
2015/01/10 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
浅谈document.write()输出样式
2015/05/07 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
angular实现表单验证及提交功能
2017/02/01 Javascript
如何使用angularJs
2017/05/08 Javascript
浅谈mint-ui loadmore组件注意的问题
2017/11/08 Javascript
Iview Table组件中各种组件扩展的使用
2018/10/20 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
2019/10/08 jQuery
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
Python里字典的基本用法(包括嵌套字典)
2019/02/27 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
Python with语句和过程抽取思想
2019/12/23 Python
python基于opencv实现人脸识别
2021/01/04 Python
亚马逊意大利站点:Amazon.it
2020/12/31 全球购物
七年级政治教学反思
2014/02/03 职场文书
董事长助理岗位职责
2014/02/18 职场文书
体现团队精神的口号
2014/06/06 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
趣味运动会简讯
2015/07/20 职场文书
python编写函数注意事项总结
2021/03/29 Python
golang json数组拼接的实例
2021/04/28 Golang