详解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与Mysql的交互示例代码
Aug 18 NodeJs
nodejs获取本机内网和外网ip地址的实现代码
Jun 01 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
基于NodeJS的前后端分离的思考与实践(二)模版探索
Sep 26 NodeJs
nodejs教程之入门
Nov 21 NodeJs
NodeJS中Buffer模块详解
Jan 07 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
NodeJS模块与ES6模块系统语法及注意点详解
Jan 04 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
nodejs的安装使用与npm的介绍
Sep 11 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常用字符串比较函数实例汇总
2014/11/24 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
实例:尽可能写友好的Javascript代码
2006/10/09 Javascript
jquery indexOf使用方法
2013/08/19 Javascript
javascript获取select值的方法分析
2015/07/02 Javascript
JavaScript利用HTML DOM进行文档操作的方法
2016/03/28 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
2016/11/17 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
用js制作淘宝放大镜效果
2020/10/28 Javascript
jQuery实现简单的手风琴效果
2020/04/17 jQuery
vue组件生命周期详解
2017/11/07 Javascript
Vue2.0 给Tab标签页和页面切换过渡添加样式的方法
2018/03/13 Javascript
vue.js实现插入数值与表达式的方法分析
2018/07/06 Javascript
在微信小程序中渲染HTML内容的方法示例
2018/09/28 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
Angular8 简单表单验证的实现示例
2020/06/03 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
[02:18]DOTA2英雄基础教程 育母蜘蛛
2014/01/20 DOTA
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
2017/03/12 Python
Python3爬楼梯算法示例
2019/03/04 Python
Django 路由控制的实现
2019/07/17 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
多个版本的python共存时使用pip的正确做法
2020/10/26 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
马来西亚奢侈品牌购物商城:Valiram 247
2020/09/29 全球购物
Java面试中常遇到的问题,也是需要注意的几点
2013/08/30 面试题
学生思想表现的评语
2014/01/30 职场文书
党的群众路线教育实践活动公开承诺书
2014/03/28 职场文书
校园文明倡议书
2014/05/16 职场文书
应急处置方案
2014/06/16 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
堂吉诃德读书笔记
2015/06/30 职场文书