全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

nodejs利用ajax实现网页无刷新上传图片实例代码

通常情况下上传图片是要通过提交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  # ajax上传图片  # ajax  # 上传文件  # Nodejs+angularjs结合multiparty实现多图片上传的示例代码  # NodeJS实现图片上传代码(Express)  # 详解nodejs实现本地上传图片并预览功能(express4.0+)  # ajax +NodeJS 实现图片上传实例  # angular2+nodejs实现图片上传功能  # 图片上传之FileAPI与NodeJs  # nodejs 整合kindEditor实现图片上传  # 轻松创建nodejs服务器(10):处理上传图片  # nodejs 图片预览和上传的示例代码  # 上传  # 文件上传  # 表单  # 适用于  # 最多  # 可在  # 详细说明  # 不可避免  # 多说  # 来实现  # 上传图片  # 请参考  # 解决这个问题  # 大家多多  # 这又  # 发生错误  # 等均  # 情况下  # 产生了 


相关文章: 宝华建站服务条款解析:五站合一功能与SEO优化设置指南  如何快速查询域名建站关键信息?  建站之星代理商如何保障技术支持与售后服务?  Thinkphp 中 distinct 的用法解析  如何在云主机上快速搭建网站?  如何使用Golang安装API文档生成工具_快速生成接口文档  制作电商网页,电商供应链怎么做?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  名字制作网站免费,所有小说网站的名字?  购物网站制作公司有哪些,哪个购物网站比较好?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  建站之星后台密码遗忘或太弱?如何重置与强化?  ,网站推广常用方法?  长沙企业网站制作哪家好,长沙水业集团官方网站?  建站之星免费版是否永久可用?  宝塔建站助手安装配置与建站模板使用全流程解析  ,柠檬视频怎样兑换vip?  如何在云主机快速搭建网站站点?  建站主机是否属于云主机类型?  制作旅游网站html,怎样注册旅游网站?  如何在IIS管理器中快速创建并配置网站?  C#怎么使用委托和事件 C# delegate与event编程方法  网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?  网站制作员失业,怎样查看自己网站的注册者?  建站之星与建站宝盒如何选择最佳方案?  专业公司网站制作公司,用什么语言做企业网站比较好?  文字头像制作网站推荐软件,醒图能自动配文字吗?  ,网页ppt怎么弄成自己的ppt?  如何在IIS中新建站点并配置端口与IP地址?  北京制作网站的公司,北京铁路集团官方网站?  建站之星安装步骤有哪些常见问题?  建站之星如何优化SEO以实现高效排名?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何在Ubuntu系统下快速搭建WordPress个人网站?  已有域名能否直接搭建网站?  建站DNS解析失败?如何正确配置域名服务器?  如何通过宝塔面板实现本地网站访问?  如何快速生成ASP一键建站模板并优化安全性?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  建站之星如何通过成品分离优化网站效率?  Bpmn 2.0的XML文件怎么画流程图  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  用v-html解决Vue.js渲染中html标签不被解析的问题  如何通过虚拟机搭建网站?详细步骤解析  如何做静态网页,sublimetext3.0制作静态网页?  重庆市网站制作公司,重庆招聘网站哪个好?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?  济南企业网站制作公司,济南社保单位网上缴费步骤? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。