nodejs-multer-图片处理插件

multer是一个Node.js中间件,用于处理 multipart/form-data 类型的表单数据,主要用于文件上传,注意:Multer中间件不会处理任何非 multipart/form-data 类型的表单数据。
Multer会自动添加一个body对象及file或files对象到 express框架的request 对象,fifile或fifiles对象包含表单上传的文件信息。
通过表单上传文件时需要注意的是:

(1)表单的提交方式只能是POST
(2)须设置表单的 enctype="multipart/form" 属性

1. 安装 multer插件

npm i multer -S

2.封装multer

  • 存放图片的文件夹,如果没有,需要手动创建,对应destination下的文件目录
    image.png
//封装上传图片

//引进multer模块  记得在终端安装multer模块
const multer = require("multer");
const path = require('path');

//3、对上传的文件进行配置
var storage = multer.diskStorage({

  //指定文件上传到服务器的路径
  destination: function (req, file, cb) {
    cb(null, './public/images') //上传目录
  },

  //指定上传到服务器文件的名称
  filename: function (req, file, cb) {
    // 1.获取文件后缀名
    let extname = path.extname(file.originalname);
    // 2.自定义文件名格式
    const filedname = Date.now() + '-' + Math.round(Math.random() * 1E9);
    cb(null, filedname + extname);//文件名
    // console.log(filedname+ extname);
  }
})
const upload = multer({ storage })

//导出模块
module.exports = upload

2. 使用

  • 前端需要把文件流传过来
const express = require('express');
const router = express.Router();
const multer = require('../utils/multer')

router.post('/',multer.single('file') ,async (req,res) => {
  let file = req.file;
  console.log(file);
  if(file) {
    res.json({
      status: 200,
      msg: '上传成功',
      fileName: '/images/' + file.filename
    })
  } else {
    res.json({
      status: -1,
      msg: '上传失败'
    })
  }
})

module.exports = router

3. 小程序vant-weapp 用法

<van-uploader file-list="{{ fileList }}"  max-count="3" bind:after-read="afterRead" />

// 上传图片
  afterRead(event) {
    const {
      file
    } = event.detail;
    // 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
    wx.uploadFile({
      url: this.data.serveraddr + '/uploadImg', // 
      filePath: file.url,//这个必传
      name: 'file',//对应multer.single('file') 的file
      formData: {
        user: 'test'
      },
      success: res => {
        // 上传完成需要更新 fileList
        console.log(res);
        const {
          fileList = []
        } = this.data;
        fileList.push({
          ...file,
          url: JSON.parse(res.data).fileName
        });
        this.setData({
          fileList
        });
      },
    });
  },

4. vue element ui 用法

跳转到其他文章: https://www.jianshu.com/writer#/notebooks/51742359/notes/97174318

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 文件上传 概念 客户端 选择发送的文件->服务器接收->网站程序判断->临时文件->移动到指定的路径 服务器 接收...
    初岄阅读 886评论 0 0
  • 介绍 写后台管理程序,与之类似php .net java 目标 数据服务,文件服务,web服务 优势 性能高...
    勾勾GO阅读 824评论 0 3
  • 1、单图片上传 要实现图片上传,首先要知道上传文件的时候,表单或者请求提交的方式。 post提交的默认请求头是ap...
    Free_syx阅读 3,466评论 0 1
  • 一、将图片上传到服务器 1、添加图片上传框 在Vue组件的表单中添加图片上传框 其中: action:图片上传到服...
    StansJ阅读 5,555评论 0 5
  • 用户图片上传思路: 1.点击上传,通过一个input type="file"选择你要上传的图片2.点击确定,马上上...
    sweetBoy_9126阅读 1,597评论 0 2

友情链接更多精彩内容