详解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 url验证(url-valid)的使用方法
Nov 18 NodeJs
用nodejs实现PHP的print_r函数代码
Mar 14 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
浅谈nodejs中的类定义和继承的套路
Jul 26 NodeJs
nodejs微信扫码支付功能实现
Feb 17 NodeJs
使用koa-log4管理nodeJs日志笔记的使用方法
Nov 30 NodeJs
nodejs基础之多进程实例详解
Dec 27 NodeJs
nodejs实现用户登录路由功能
May 22 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 NodeJs
详解NodeJS模块化
Jun 15 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
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
2014/11/22 PHP
php网页版聊天软件实现代码
2016/08/12 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
php中使用array_filter()函数过滤数组实例讲解
2021/03/03 PHP
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
Seajs的学习笔记
2014/03/04 Javascript
iframe的onreadystatechange事件在firefox下的使用
2014/04/16 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
Windows系统下安装Node.js的步骤图文详解
2016/11/15 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
浅析Vue中method与computed的区别
2018/03/06 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
python基础教程之简单入门说明(变量和控制语言使用方法)
2014/03/25 Python
python实现ipsec开权限实例
2014/11/11 Python
python遍历类中所有成员的方法
2015/03/18 Python
Python中用memcached来减少数据库查询次数的教程
2015/04/07 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
机器学习实战之knn算法pandas
2019/06/22 Python
django搭建项目配置环境和创建表过程详解
2019/07/22 Python
tensorflow多维张量计算实例
2020/02/11 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
利用Python pandas对Excel进行合并的方法示例
2020/11/04 Python
x-ua-compatible content=”IE=7, IE=9″意思理解
2013/07/22 HTML / CSS
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
2014年清明节寄语
2014/04/03 职场文书
2014年教师节活动总结
2014/08/29 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
民事诉讼代理词
2015/05/25 职场文书