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 相关文章推荐
用Javascript实现锚点(Anchor)间平滑跳转
Sep 08 Javascript
window.dialogArguments 使用说明
Apr 11 Javascript
$.ajax返回的JSON无法执行success的解决方法
Sep 09 Javascript
jquery实现弹出窗口效果的实例代码
Nov 28 Javascript
让angularjs支持浏览器自动填表
Nov 10 Javascript
jQuery中on()方法用法实例
Jan 19 Javascript
AngularJS语法详解
Jan 23 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
Mar 28 Javascript
微信小程序 window_x64环境搭建
Sep 30 Javascript
React 全自动数据表格组件——BodeGrid的实现思路
Jun 12 Javascript
微信小程序如何获取群聊的openGid以及名称详解
Jul 17 Javascript
VuePress 中如何增加用户登录功能
Nov 29 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 无限级分类学习参考之对ecshop无限级分类的解析 带详细注释
2010/03/23 PHP
在yii中新增一个用户验证的方法详解
2013/06/20 PHP
PHP处理SQL脚本文件导入到MySQL的代码实例
2014/03/17 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
PHP时间和日期函数详解
2015/05/08 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
PHP XML和数组互相转换详解
2016/10/26 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
window.print打印指定div实例代码
2013/12/13 Javascript
深入理解Javascript中this的作用域
2014/08/12 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JavaScript实现给按钮加上双重动作的方法
2015/08/14 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
2016/06/06 Javascript
详解jQuery事件
2017/01/13 Javascript
vue webpack实用技巧总结
2018/04/24 Javascript
vue slots 组件的组合/分发实例
2018/09/06 Javascript
Vue.js 中的 v-show 指令及用法详解
2018/11/19 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
Linux下用Python脚本监控目录变化代码分享
2015/05/21 Python
python基于itchat实现微信群消息同步机器人
2017/02/27 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
2019/02/22 Python
python调用matplotlib模块绘制柱状图
2019/10/18 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
css3实现文字首尾衔接跑马灯的示例代码
2020/10/16 HTML / CSS
Vince官网:全球著名设计师品牌,休闲而优雅的服饰
2017/01/15 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
食堂个人先进事迹
2014/01/22 职场文书
乡下人家教学反思
2014/02/01 职场文书
常住证明范本
2015/06/23 职场文书
任命书格式模板
2015/09/22 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书