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-images详解
May 08 NodeJs
NodeJs中express框架的send()方法简介
Jun 20 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs实现爬取网站图片功能
Dec 14 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
nodejs微信开发之接入指南
Mar 17 NodeJs
NodeJS读取分析Nginx错误日志的方法
May 14 NodeJs
nodejs开发一个最简单的web服务器实例讲解
Jan 02 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 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 文件上传进度条的两种实现方法的代码
2007/11/25 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
2011/08/22 PHP
第六章 php目录与文件操作
2011/12/30 PHP
浅析PHP中Collection 类的设计
2013/06/21 PHP
php浏览历史记录的方法
2015/03/10 PHP
php实现的pdo公共类定义与用法示例
2017/07/19 PHP
从盛大通行证上摘下来的身份证验证js代码
2011/01/11 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
2011/05/28 Javascript
JavaScript返回网页中超链接数量的方法
2015/04/03 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
在JavaScript中对HTML进行反转义详解
2016/05/18 Javascript
javascript将中国数字格式转换成欧式数字格式的简单实例
2016/08/02 Javascript
详解jQuery的Cookie插件
2016/11/23 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
seajs中最常用的7个功能、配置示例
2017/10/10 Javascript
vue导出html、word和pdf的实现代码
2018/07/31 Javascript
nodejs 如何手动实现服务器
2018/08/20 NodeJs
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
JavaScript 判断iPhone X Series机型的方法
2019/01/28 Javascript
es6函数之箭头函数用法实例详解
2020/04/25 Javascript
[01:09:23]KG vs TNC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详解Python中DOM方法的动态性
2015/04/11 Python
Python文件与文件夹常见基本操作总结
2016/09/19 Python
python sys,os,time模块的使用(包括时间格式的各种转换)
2018/04/27 Python
Python创建或生成列表的操作方法
2019/06/19 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
软件测试工程师面试问题精选
2016/10/28 面试题
实习生自我鉴定范文
2013/12/05 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
情人节活动总结范文
2015/02/05 职场文书
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL