详解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服务器(10):处理上传图片
Dec 18 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
Nodejs Express4.x开发框架随手笔记
Nov 23 NodeJs
Nodejs学习item【入门手上】
May 05 NodeJs
详解nodejs 文本操作模块-fs模块(五)
Dec 23 NodeJs
使用nodejs爬取前程无忧前端技能排行
May 06 NodeJs
nodejs body-parser 解析post数据实例
Jul 26 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
Nodejs模块载入运行原理
Feb 23 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
NodeJS多种创建WebSocket监听的方式(三种)
Jun 04 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
Yii实现单用户博客系统文章详情页插入评论表单的方法
2015/12/28 PHP
详解js异步文件加载器
2016/01/24 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
PHP tp5中使用原生sql查询代码实例
2020/10/28 PHP
Javascript面向对象编程
2012/03/18 Javascript
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
10个基于浏览器的JavaScript调试工具分享
2013/02/07 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
js根据json数据中的某一个属性来给数据分组的方法
2018/10/08 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
jQuery实现带进度条的轮播图
2020/09/13 jQuery
使用typescript快速开发一个cli的实现示例
2020/12/09 Javascript
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python基础教程之循环介绍
2014/08/29 Python
python动态性强类型用法实例
2015/05/09 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
百联网上商城:i百联
2017/01/28 全球购物
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
罗马尼亚购物网站:Vivantis.ro
2019/07/20 全球购物
团支书竞选演讲稿
2014/04/28 职场文书
春季防火方案
2014/05/10 职场文书
创先争优标语
2014/06/27 职场文书
教师学习八项规定六项禁令思想汇报
2014/09/27 职场文书
离婚协议书范本及离婚须知
2014/10/15 职场文书