详解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实战心得之eventproxy模块控制并发
Oct 27 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
mac下的nodejs环境安装的步骤
May 24 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
修改Nodejs内置的npm默认配置路径方法
May 13 NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
基于NodeJS开发钉钉回调接口实现AES-CBC加解密
Aug 20 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 curl 抓取AJAX异步内容示例
2014/09/09 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
jQuery实现的Div窗口震动特效
2014/06/09 Javascript
Node.js中require的工作原理浅析
2014/06/24 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
微信小程序倒计时功能实现代码
2017/11/09 Javascript
Bootstrap实现下拉菜单多级联动
2017/11/23 Javascript
微信小程序实现添加手机联系人功能示例
2017/11/30 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
[04:04]显微镜下的DOTA2第六期——电影级别的华丽团战
2014/06/20 DOTA
python中文乱码的解决方法
2013/11/04 Python
Python判断文件和文件夹是否存在的方法
2015/05/21 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Python之使用adb shell命令启动应用的方法详解
2019/01/07 Python
Python multiprocessing多进程原理与应用示例
2019/02/28 Python
如何运行.ipynb文件的图文讲解
2019/06/27 Python
Django发送邮件功能实例详解
2019/09/02 Python
如何基于python3和Vue实现AES数据加密
2020/03/27 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
1000字打架检讨书
2014/11/03 职场文书
开学第一周总结
2015/07/16 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
在Django中使用MQTT的方法
2021/05/10 Python
SpringBoot+VUE实现数据表格的实战
2021/08/02 Java/Android
详解Oracle块修改跟踪功能
2021/11/07 Oracle
MYSQL事务的隔离级别与MVCC
2022/05/25 MySQL