详解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
Google官方支持的NodeJS访问API,提供后台登录授权
Jul 29 NodeJs
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
Aug 03 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodejs实现OAuth2.0授权服务认证
Dec 27 NodeJs
NodeJS父进程与子进程资源共享原理与实现方法
Mar 16 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
thinkphp使用phpmailer发送邮件的方法
2014/11/24 PHP
php实现监控varnish缓存服务器的状态
2014/12/30 PHP
php实现的生成迷宫与迷宫寻址算法完整实例
2017/11/06 PHP
说明你的Javascript技术很烂的五个原因
2011/04/26 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
理解javascript中的回调函数(callback)
2014/09/02 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
BootStrap iCheck插件全选与获取value值的解决方法
2016/08/24 Javascript
js is_valid_filename验证文件名的函数
2017/07/19 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
2017/09/28 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
[原创]js实现保存文本框内容为本地文件兼容IE,chrome,火狐浏览器
2018/02/14 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
JavaScript引用类型Array实例分析
2018/07/24 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
用Python登录Gmail并发送Gmail邮件的教程
2015/04/17 Python
linux环境下的python安装过程图解(含setuptools)
2017/11/22 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
查看端口并杀进程python脚本代码
2019/12/17 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
小孩百日宴答谢词
2014/01/15 职场文书
计算机软件专业求职信
2014/06/10 职场文书
毕业生评语大全
2015/01/04 职场文书
亲属关系公证书样本
2015/01/23 职场文书
社区五一劳动节活动总结
2015/02/09 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
sql server偶发出现死锁的解决方法
2022/04/10 SQL Server