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 相关文章推荐
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
May 27 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
Mar 18 Javascript
JS简单实现禁止访问某个页面的方法
Sep 13 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
JavaScript中常用的验证reg
Oct 13 Javascript
JQuery 动态生成Table表格实例代码
Dec 02 Javascript
three.js中文文档学习之创建场景
Nov 20 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
jQuery内容选择器与表单选择器实例分析
Jun 28 jQuery
JavaScript简单编程实例学习
Feb 14 Javascript
简单了解JavaScript arguement原理及作用
May 28 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
解析mysql left( right ) join使用on与where筛选的差异
2013/06/18 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
PHP如何使用Memcached
2016/04/05 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
js隐藏与显示回到顶部按钮及window.onscroll事件应用
2013/01/25 Javascript
JS字符串处理实例代码
2013/08/05 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
2016/11/03 Javascript
js实现把图片的绝对路径转为base64字符串、blob对象再上传
2016/12/29 Javascript
Angular2使用Guard和Resolve进行验证和权限控制
2017/04/24 Javascript
swiper插件自定义切换箭头按钮
2017/12/28 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
浅谈如何使用webpack构建多页面应用
2018/05/30 Javascript
微信小程序单选radio及多选checkbox按钮用法示例
2019/04/30 Javascript
js常用正则表达式集锦
2019/05/17 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
Python简单连接MongoDB数据库的方法
2016/03/15 Python
python对象及面向对象技术详解
2016/07/19 Python
深入理解Python对Json的解析
2017/02/14 Python
python实现二维插值的三维显示
2018/12/17 Python
Python动态语言与鸭子类型详解
2019/07/01 Python
如何基于pythonnet调用halcon脚本
2020/01/20 Python
安装完Python包然后找不到模块的解决步骤
2020/02/13 Python
Python爬虫使用bs4方法实现数据解析
2020/08/25 Python
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
课外活动实习计划
2015/01/19 职场文书
检讨书格式
2015/01/23 职场文书
从事会计工作年限证明
2015/06/23 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书