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 实现模拟form表单上传文件
Jul 14 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
nodejs判断文件、文件夹是否存在及删除的方法
Nov 10 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
搭建一个nodejs脚手架的方法步骤
Jun 28 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
nodejs对mongodb数据库的增加修删该查实例代码
Jan 05 NodeJs
分享五个Node.js开发的优秀实践 
Apr 07 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中var_export与var_dump的区别分析
2010/08/21 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
Convert Seconds To Hours
2007/06/16 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
2009/08/04 Javascript
offsetParent 算法分析
2010/04/05 Javascript
JavaScript中数组的排序、乱序和搜索实现代码
2011/11/30 Javascript
用JavaScript仿PS里的羽化效果代码
2011/12/20 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
鼠标移到图片上变大显示而不是放大镜效果
2014/06/15 Javascript
ANGULARJS中用NG-BIND指令实现单向绑定的例子
2014/12/08 Javascript
jQuery源码分析之jQuery.fn.each与jQuery.each用法
2015/01/23 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
Python入门篇之文件
2014/10/20 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
Python 中使用 PyMySQL模块操作数据库的方法
2019/11/10 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
python中os包的用法
2020/06/01 Python
印尼披萨外送专家:Domino’s Pizza印尼
2017/12/28 全球购物
国际礼品店:GiftsnIdeas
2018/05/03 全球购物
新闻系毕业生推荐信
2013/11/16 职场文书
《诺贝尔》教学反思
2014/02/17 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
离婚财产处理协议书
2014/09/30 职场文书
二手车转让协议书
2015/01/29 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
预备党员党支部意见
2015/06/02 职场文书
贫困生证明范文
2015/06/16 职场文书