node+multer实现图片上传的示例代码


Posted in Javascript onFebruary 18, 2020

最近在学习node实现一个后台管理系统,用到了图片上传,有一些小问题记录一下~

直接上代码,问题都记录在注释里~

const express = require('express');
const path = require('path');
const multer = require('multer');
const app = new express();

// 设置静态目录 第一个参数为虚拟的文件前缀,实际上文件系统中不存在
// 可以用public做为前缀来加载static文件夹下的文件了
app.use('/public', express.static(path.join(__dirname, './static')));

// 根据当前文件目录指定文件夹
const dir = path.resolve(__dirname, '../static/img');
// 图片大小限制KB
const SIZELIMIT = 500000;

const storage = multer.diskStorage({
  // 指定文件路径
  destination: function(req, file, cb) {
    // !!!相对路径时以node执行目录为基准,避免权限问题,该目录最好已存在*
    // cb(null, './uploads');
    cb(null, dir);
  },
  // 指定文件名
  filename: function(req, file, cb) {
    // filedname指向参数key值
    cb(null, Date.now() + '-' + file.originalname);
  }
});

const upload = multer({
  storage: storage
});

app.post('/upload', upload.single('file'), (req, res) => {
  // 即将上传图片的key值 form-data对象{key: value}
  // 检查是否有文件待上传
  if (req.file === undefined) {
    return res.send({
      errno: -1,
      msg: 'no file'
    });
  }
  const {size, mimetype, filename} = req.file;
  const types = ['jpg', 'jpeg', 'png', 'gif'];
  const tmpTypes = mimetype.split('/')[1];
  // 检查文件大小
  if (size >= SIZELIMIT) {
    return res.send({
      errno: -1,
      msg: 'file is too large'
    });
  }
  // 检查文件类型
  else if (types.indexOf(tmpTypes) < 0) {
    return res.send({
      errno: -1,
      msg: 'not accepted filetype'
    });
  }
  // 路径可根据设置的静态目录指定
  const url = '/public/img/' + filename;
  res.json({
    errno: 0,
    msg: 'upload success',
    url
  });
});

app.listen(3000, () => {
  console.log('service start');
});

附上文档参考链接:
express框架
path模块
multer
最后再附赠一个node自动重启工具nodemon

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js做一个小游戏平台 (一)
Dec 29 Javascript
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
javascript中Math.random()使用详解
Apr 15 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
js学习总结之DOM2兼容处理顺序问题的解决方法
Jul 27 Javascript
JavaScript 中使用 Generator的方法
Dec 29 Javascript
浅析java线程中断的办法
Jul 29 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
深入了解Hybrid App技术的相关知识
Jul 17 Javascript
vue实现淘宝购物车功能
Apr 20 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 #Javascript
javascript中的with语句学习笔记及用法
Feb 17 #Javascript
JS实现百度搜索框关键字推荐
Feb 17 #Javascript
js实现百度淘宝搜索功能
Feb 17 #Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 #Javascript
JavaScript中this的学习笔记及用法整理
Feb 17 #Javascript
Vue 中使用 typescript的方法详解
Feb 17 #Javascript
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
php中配置文件操作 如config.php文件的读取修改等操作
2012/07/07 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
优化javascript的执行速度
2010/01/23 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
用js写的一个路由(简单实例)
2016/09/24 Javascript
Angular2库初探
2017/03/01 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
js中document.write和document.writeln的区别
2018/03/11 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
layer.prompt使文本框为空的情况下也能点击确定的方法
2019/09/24 Javascript
微信小程序表单验证WxValidate的使用
2019/11/27 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
浅谈vue 组件中的setInterval方法和window的不同
2020/07/30 Javascript
python bmp转换为jpg 并删除原图的方法
2018/10/25 Python
Python实现的登录验证系统完整案例【基于搭建的MVC框架】
2019/04/12 Python
python 在某.py文件中调用其他.py内的函数的方法
2019/06/25 Python
Django的models模型的具体使用
2019/07/15 Python
django框架使用方法详解
2019/07/18 Python
python数据化运营的重要意义
2019/11/25 Python
python__new__内置静态方法使用解析
2020/01/07 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
到底Java是如何传递参数的?是by value或by reference?
2012/07/13 面试题
《愚公移山》教学反思
2014/02/20 职场文书
大学生就业策划书范文
2014/04/04 职场文书
市级文明单位申报材料
2014/05/07 职场文书
护理专业毕业生自荐书
2014/05/24 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server