详解nodejs实现本地上传图片并预览功能(express4.0+)

发布时间 - 2026-01-11 02:05:24    点击率:

Express为:4.13.1  multyparty: 4.1.2

代码主要实现本地图片上传到nodejs服务器的文件下,通过取图片路径进行图片预览

写在前面:计划实现图片上传预览功能,但是本地图片上传所获得路径为 C:\fakepath\"+文件名的形式,得不到文件真实路径,所以无法直接预览,于是采用将图片上传至服务器,传回服务器路径,实现预览。前端采用通过ajax方式上传文件,使用FormData进行ajax请求  ,nodejs端采用multiparty模块

相关查看文档:

通过Ajax方式上传文件,使用FormData进行Ajax请求

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上传图片  # nodejs  # express上传图片  # nodejs上传图片预览  # node+axios实现服务端文件上传示例  # 利用node+koa+axios实现图片上传和回显功能  # 详解Vue+axios+Node+express实现文件上传(用户头像上传)  # nodejs+express实现文件上传下载管理网站  # nodejs基于express实现文件上传的方法  # Nodejs+express+html5 实现拖拽上传  # 基于nodejs+express(4.x+)实现文件上传功能  # 使用express+multer实现node中的图片上传功能  # 使用nodejs+express实现简单的文件上传功能  # Ajax异步文件上传与NodeJS express服务端处理  # Nodejs进阶:基于express+multer的文件上传实例  # NodeJS实现图片上传代码(Express)  # node+express+axios实现单文件上传功能  # 上传  # 图片上传  # 上传文件  # 传至  # 的是  # 是这样  # 要去  # 时就  # 上传图片  # 大家多多  # 时需  # 库里  # 空白处  # 文档  # 写在前面  # id  # file  # j_imgfile  # div  # test 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程  如何用花生壳三步快速搭建专属网站?  Laravel怎么使用Intervention Image库处理图片上传和缩放  如何解决hover在ie6中的兼容性问题  C++时间戳转换成日期时间的步骤和示例代码  Laravel Seeder填充数据教程_Laravel模型工厂Factory使用  智能起名网站制作软件有哪些,制作logo的软件?  如何快速建站并高效导出源代码?  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  如何快速搭建高效WAP手机网站?  Android okhttputils现在进度显示实例代码  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  详解Huffman编码算法之Java实现  Laravel观察者模式如何使用_Laravel Model Observer配置  ai格式如何转html_将AI设计稿转换为HTML页面流程【页面】  文字头像制作网站推荐软件,醒图能自动配文字吗?  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  网易LOFTER官网链接 老福特网页版登录地址  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  如何快速配置高效服务器建站软件?  Android利用动画实现背景逐渐变暗  php json中文编码为null的解决办法  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  中山网站制作网页,中山新生登记系统登记流程?  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  进行网站优化必须要坚持的四大原则  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何注册花生壳免费域名并搭建个人网站?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Laravel如何自定义分页视图?(Pagination示例)  怎样使用JSON进行数据交换_它有什么限制  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  晋江文学城电脑版官网 晋江文学城网页版直接进入  如何在七牛云存储上搭建网站并设置自定义域名?  如何在局域网内绑定自建网站域名?  JavaScript如何实现错误处理_try...catch如何捕获异常?  如何快速搭建虚拟主机网站?新手必看指南  中国移动官方网站首页入口 中国移动官网网页登录  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel如何处理文件下载请求?(Response示例)  北京的网站制作公司有哪些,哪个视频网站最好?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  手机软键盘弹出时影响布局的解决方法