详解nodejs实现本地上传图片并预览功能(express4.0+)


Posted in NodeJs onJune 28, 2017

Express为:4.13.1  multyparty: 4.1.2

代码主要实现本地图片上传到nodejs服务器的文件下,通过取图片路径进行图片预览

写在前面:计划实现图片上传预览功能,但是本地图片上传所获得路径为 C:\fakepath\"+文件名的形式,得不到文件真实路径,所以无法直接预览,于是采用将图片上传至服务器,传回服务器路径,实现预览。前端采用通过ajax方式上传文件,使用FormData进行ajax请求  ,nodejs端采用multiparty模块

相关查看文档:

node-multiparty github

FormData - Web APIs | MDN

部分代码:

<form name='picForm' action = "javascript:;"method="post" encype = "multipart/form-data" >
  <input type="file" id="test" id="j_imgfile">
</form>
<div>
  <img src="" id="j_imgPic">
</div>

 js中采用change事件,即当选完图片时就发送ajax请求

$('#j_imgfile').on('change',function(){
    // 判断上传文件类型
    var objFile = $('#j_imgfile').val();
    var objType = objFile.substring(objFile.lastIndexOf(".")).toLowerCase();
    var formData = new FormData(document.forms.namedItem("picForm"));
    console.log(objType);
    if(!(objType == '.jpg'||objType == '.png'))
    {
      alert("请上传jpg、png类型图片");
      return false;
    }else{
      $.ajax({
        type : 'post',
        url : '/uploadUserImgPre',
        data: formData ,
        processData:false,
        async:false,
        cache: false, 
         contentType: false, 
        success:function(re){
          re.imgSrc = re.imgSrc.replace('public','');
          re.imgSrc = re.imgSrc.replace(/\\/g,'\/');
          $('#j_imgPic').attr('src',re.imgSrc);
        },
        error:function(re){
          console.log(re);
        }
      });  
    }
  });

 nodejs app.js里代码

app.post('/uploadUserImgPre',routes.users.uploadUserImgPre);

routes/users.js 里代码

exports.uploadUserImgPre = function(req, res, next) {
 //生成multiparty对象,并配置上传目标路径
 var form = new multiparty.Form({uploadDir: './public/files/images'});
 form.parse(req, function(err, fields, files) {
  var filesTmp = JSON.stringify(files);
 
  if(err){
   console.log('parse error: ' + err);
  } else {
   testJson = eval("(" + filesTmp+ ")"); 
   console.log(testJson.fileField[0].path);
   res.json({imgSrc:testJson.fileField[0].path})
   console.log('rename ok');
  }
 });
}

部分说明:

文件上传至服务器后 路径path变为:public\files\images\W-jy9YsxsPjNpQHslzGvdXBk.jpg

由于在app.js中设置过public为默认路径,所以整理地址时需要去掉public,并且把‘\'变成‘/'

app.use(express.static(path.join(__dirname, 'public')));

 最后效果大概是这样的,html部分不一样~我的是jade模板,还有css什么的,并木有列出来

点击空白处,上传图片,接下来的功能就是点击上传把地址放到数据库里~(这个功能还木有做呢)

详解nodejs实现本地上传图片并预览功能(express4.0+)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
Nodejs学习笔记之测试驱动
Apr 16 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
Nodejs中使用phantom将html转为pdf或图片格式的方法
Sep 18 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodeJS微信分享
Dec 20 NodeJs
详解nodeJs文件系统(fs)与流(stream)
Jan 24 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs aes 加解密实例
Oct 10 NodeJs
nodejs使用Sequelize框架操作数据库的实现
Oct 21 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 #NodeJs
NodeJS自定义模块写法(详解)
Jun 27 #NodeJs
docker中编译nodejs并使用nginx启动
Jun 23 #NodeJs
NodeJs中express框架的send()方法简介
Jun 20 #NodeJs
深入浅析Nodejs的Http模块
Jun 20 #NodeJs
Nodejs实现多房间简易聊天室功能
Jun 20 #NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 #NodeJs
You might like
两种php调用Java对象的方法
2006/10/09 PHP
将OICQ数据转成MYSQL数据
2006/10/09 PHP
PHP session文件独占锁引起阻塞问题解决方法
2015/05/12 PHP
PHP中的self关键字详解
2019/06/23 PHP
Laravel6.18.19如何优雅的切换发件账户
2020/06/14 PHP
浅析PHP中json_encode与json_decode的区别
2020/07/15 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
慎用 somefunction.prototype 分析
2009/06/02 Javascript
js tab效果的实现代码
2009/12/26 Javascript
基于jQuery的倒计时实现代码
2012/05/30 Javascript
全面理解面向对象的 JavaScript(来自ibm)
2013/11/10 Javascript
JQuery使用index方法获取Jquery对象数组下标的方法
2015/05/18 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
knockoutjs模板实现树形结构列表
2017/07/31 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
微信小程序 swiper组件构建轮播图的实例
2017/09/20 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
OpenLayer学习之自定义测量控件
2020/09/28 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
2021/02/08 Javascript
实例讲解python函数式编程
2014/06/09 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
Python向Excel中插入图片的简单实现方法
2018/04/24 Python
django 框架实现的用户注册、登录、退出功能示例
2019/11/28 Python
解决Python中报错TypeError: must be str, not bytes问题
2020/04/07 Python
Jupyter notebook 启动闪退问题的解决
2020/04/13 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
英国百安居装饰建材网上超市:B&Q
2016/09/13 全球购物
益模软件Java笔试题
2012/03/27 面试题
竟聘演讲稿范文
2013/12/31 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS