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学习笔记之Http模块
Jan 13 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
使用nodejs下载风景壁纸
Feb 05 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
NodeJS基础API搭建服务器详细过程记录
Apr 01 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs+express搭建多人聊天室步骤
Feb 12 NodeJs
nodejs简单读写excel内容的方法示例
Mar 16 NodeJs
nodejs实现范围请求的实现代码
Oct 12 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
Apr 29 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 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
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
2011/08/08 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
BOOM vs RR BO5 第四场 2.14
2021/03/10 DOTA
js中的string.format函数代码
2020/08/11 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
JavaScript 模拟类机制及私有变量的方法及思路
2013/07/10 Javascript
JS使用parseInt解析数字实现求和的方法
2015/08/05 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
2017/04/12 Javascript
微信小程序之多列表的显示和隐藏功能【附源码】
2018/08/06 Javascript
countup.js实现数字动态叠加效果
2019/10/17 Javascript
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
python检测主机的连通性并记录到文件的实例
2018/06/21 Python
解决vscode python print 输出窗口中文乱码的问题
2018/12/03 Python
Python设计模式之原型模式实例详解
2019/01/18 Python
pytorch 在网络中添加可训练参数,修改预训练权重文件的方法
2019/08/17 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
如何利用python正则表达式匹配版本信息
2020/12/09 Python
在数据文件自动增长时,自动增长是否会阻塞对文件的更新
2014/05/01 面试题
介绍一下Linux中的链接
2016/05/28 面试题
设备动力科岗位职责范本
2014/02/23 职场文书
国庆促销活动总结
2014/08/29 职场文书
区长工作作风个人整改措施
2014/10/01 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
2015年党员自评材料
2014/12/17 职场文书
大四学生个人总结
2015/02/15 职场文书
现役军人家属慰问信
2015/03/24 职场文书
学校实习推荐信
2015/03/27 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
Python OpenCV快速入门教程
2021/04/17 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
Android Rxjava3 使用场景详解
2022/04/07 Java/Android
vue css 相对路径导入问题级踩坑记录
2022/06/05 Vue.js