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的实现原理和搭建服务器(动态)
Aug 10 NodeJs
详解nodejs中的process进程
Mar 19 NodeJs
nodejs 图片预览和上传的示例代码
Sep 30 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
详解从NodeJS搭建中间层再谈前后端分离
Nov 13 NodeJs
NodeJs实现简单的爬虫功能案例分析
Dec 05 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
PHP JSON 数据解析代码
2010/05/26 PHP
PHP里的中文变量说明
2011/07/23 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
js url传值中文乱码之解决之道
2009/11/20 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
Vue.js实现微信过渡动画左右切换效果
2017/06/13 Javascript
JS实现留言板功能
2017/06/17 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
vue-star评星组件开发实例
2018/03/01 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
ES6使用export和import实现模块化的方法
2018/09/10 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
2019/09/20 Javascript
详解Django 中是否使用时区的区别
2018/06/14 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
python pygame实现方向键控制小球
2019/05/17 Python
python障碍式期权定价公式
2019/07/19 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Python实现电视里的5毛特效实例代码详解
2020/05/15 Python
python程序实现BTC(比特币)挖矿的完整代码
2021/01/20 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
html5简介_动力节点Java学院整理
2017/07/07 HTML / CSS
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
店长岗位的工作内容
2013/11/12 职场文书
个人求职信范文分享
2014/01/06 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
2015年度考核个人工作总结
2015/10/24 职场文书
课文《燕子》教学反思
2016/02/17 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
基于Pygame实现简单的贪吃蛇游戏
2021/12/06 Python