详解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中读取中文文件编码问题、发送邮件和定时任务实例
Jan 01 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
浅谈Nodejs中的作用域问题
Dec 26 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodeJS模块简单用法示例
Apr 21 NodeJs
nodejs实现套接字服务功能详解
Jun 21 NodeJs
详解webpack打包nodejs项目(前端代码)
Sep 19 NodeJs
NodeJs入门教程之定时器和队列
Mar 08 NodeJs
nodejs微信开发之自动回复的实现
Mar 17 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 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、Nginx、Apache中禁止网页被iframe引用的方法
2020/10/01 PHP
php程序内部post数据的方法
2015/03/31 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
JavaScript中的getMilliseconds()方法使用详解
2015/06/10 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
js实现图片无缝滚动特效
2020/03/19 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
jquery获取点击控件的绝对位置简单实例
2016/10/13 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
浅谈ECMAScript6新特性之let、const
2017/08/02 Javascript
在vue.js中使用JSZip实现在前端解压文件的方法
2018/09/05 Javascript
详解JavaScript中操作符和表达式
2018/09/12 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
JavaScript实现4位随机验证码的生成
2021/01/28 Javascript
python 利用for循环 保存多个图像或者文件的实例
2018/11/09 Python
python解析json串与正则匹配对比方法
2018/12/20 Python
Django的Modelforms用法简介
2019/07/27 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python多任务之协程的使用详解
2019/08/26 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
Linux不知道文件后缀名怎么判断文件类型
2012/04/26 面试题
大学生军训自我评价分享
2013/11/09 职场文书
文员岗位职责范本
2014/03/08 职场文书
创先争优标语
2014/06/27 职场文书
十八大观后感
2015/06/12 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
go xorm框架的使用
2021/05/22 Golang
一篇文章弄懂Python关键字、标识符和变量
2021/07/15 Python
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android
Python使用MapReduce进行简单的销售统计
2022/04/22 Python