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与Mysql的交互示例代码
Aug 18 NodeJs
NodeJS学习笔记之(Url,QueryString,Path)模块
Jan 13 NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
nodejs服务搭建教程 nodejs访问本地站点文件
Apr 07 NodeJs
详解nodejs微信公众号开发——3.封装消息响应模块
Apr 10 NodeJs
详解Windows下安装Nodejs步骤
May 18 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs 生成和导出 word的实例代码
Jul 31 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 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
Discuz! Passport 通行证整合
2008/03/27 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
解析posix与perl标准的正则表达式区别
2013/06/17 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
CodeIgniter配置之database.php用法实例分析
2016/01/20 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
PHP常用日期加减计算方法实例小结
2018/07/31 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
让table变成exls的示例代码
2014/03/24 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
Jquery 分页插件之Jquery Pagination
2015/08/25 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
vue配置nprogress实现页面顶部进度条
2019/09/21 Javascript
巧用python和libnmapd,提取Nmap扫描结果
2016/08/23 Python
python自带的http模块详解
2016/11/06 Python
Python实现的递归神经网络简单示例
2017/08/11 Python
python+opencv识别图片中的圆形
2020/03/25 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
浅析Python与Mongodb数据库之间的操作方法
2019/07/01 Python
python将数组n等分的实例
2019/12/02 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
HTML高亮关键字的实现代码
2018/10/22 HTML / CSS
体育教师自荐信范文
2013/12/16 职场文书
党员学习十八大感想
2014/01/17 职场文书
县优秀教师事迹材料
2014/01/31 职场文书
教师师德反思材料
2014/02/15 职场文书
团日活动总结怎么写
2014/06/25 职场文书
2015年乡镇工作总结范文
2015/04/22 职场文书
初中军训感言
2015/08/01 职场文书
养成教育工作总结
2015/08/13 职场文书
小程序与后端Java接口交互实现HelloWorld入门
2021/07/09 Java/Android