nodejs-multer-圖片處理插件

multer是一個(gè)Node.js中間件,用于處理 multipart/form-data 類型的表單數(shù)據(jù),主要用于文件上傳,注意:Multer中間件不會(huì)處理任何非 multipart/form-data 類型的表單數(shù)據(jù)。
Multer會(huì)自動(dòng)添加一個(gè)body對(duì)象及file或files對(duì)象到 express框架的request 對(duì)象,fifile或fifiles對(duì)象包含表單上傳的文件信息。
通過(guò)表單上傳文件時(shí)需要注意的是:

(1)表單的提交方式只能是POST
(2)須設(shè)置表單的 enctype="multipart/form" 屬性

1. 安裝 multer插件

npm i multer -S

2.封裝multer

  • 存放圖片的文件夾,如果沒(méi)有,需要手動(dòng)創(chuàng)建,對(duì)應(yīng)destination下的文件目錄
    image.png
//封裝上傳圖片

//引進(jìn)multer模塊  記得在終端安裝multer模塊
const multer = require("multer");
const path = require('path');

//3、對(duì)上傳的文件進(jìn)行配置
var storage = multer.diskStorage({

  //指定文件上傳到服務(wù)器的路徑
  destination: function (req, file, cb) {
    cb(null, './public/images') //上傳目錄
  },

  //指定上傳到服務(wù)器文件的名稱
  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 })

//導(dǎo)出模塊
module.exports = upload

2. 使用

  • 前端需要把文件流傳過(guò)來(lái)
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;
    // 當(dāng)設(shè)置 mutiple 為 true 時(shí), file 為數(shù)組格式,否則為對(duì)象格式
    wx.uploadFile({
      url: this.data.serveraddr + '/uploadImg', // 
      filePath: file.url,//這個(gè)必傳
      name: 'file',//對(duì)應(yīng)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 用法

跳轉(zhuǎn)到其他文章: http://m.itdecent.cn/writer#/notebooks/51742359/notes/97174318

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文件上傳 概念 客戶端 選擇發(fā)送的文件->服務(wù)器接收->網(wǎng)站程序判斷->臨時(shí)文件->移動(dòng)到指定的路徑 服務(wù)器 接收...
    初岄閱讀 877評(píng)論 0 0
  • 介紹 寫后臺(tái)管理程序,與之類似php .net java 目標(biāo) 數(shù)據(jù)服務(wù),文件服務(wù),web服務(wù) 優(yōu)勢(shì) 性能高...
    勾勾GO閱讀 818評(píng)論 0 3
  • 1、單圖片上傳 要實(shí)現(xiàn)圖片上傳,首先要知道上傳文件的時(shí)候,表單或者請(qǐng)求提交的方式。 post提交的默認(rèn)請(qǐng)求頭是ap...
    Free_syx閱讀 3,461評(píng)論 0 1
  • 一、將圖片上傳到服務(wù)器 1、添加圖片上傳框 在Vue組件的表單中添加圖片上傳框 其中: action:圖片上傳到服...
    StansJ閱讀 5,548評(píng)論 0 5
  • 用戶圖片上傳思路: 1.點(diǎn)擊上傳,通過(guò)一個(gè)input type="file"選擇你要上傳的圖片2.點(diǎn)擊確定,馬上上...
    sweetBoy_9126閱讀 1,594評(píng)論 0 2

友情鏈接更多精彩內(nèi)容