首頁  >  文章  >  web前端  >  node中multer是什麼意思

node中multer是什麼意思

WBOY
WBOY原創
2022-04-15 15:57:252536瀏覽

在node中,multer是一個用於處理「multipart/form-data」類型資料格式的中間件,主要用於上傳檔案;該中間件在解析完請求體後,會向Request對象中新增一個body物件和一個file或files物件。

node中multer是什麼意思

本文操作環境:Windows10系統、nodejs 12.19.0版、Dell G3電腦。

node中multer是什麼意思

Multer 是一個 node.js 中間件,用於處理 multipart/form-data 類型的表單數據,它主要用於上傳檔案。它是寫在 busboy 之上非常有效率。

注意: Multer 不會處理任何非multipart/form-data 類型的表單資料

Multer在解析完請求體後,會在Request物件中新增一個body物件和一個file或files物件(上傳多個檔案時使用files物件)。

其中,body物件中包含所提交表單中的文字欄位(如果有),而file(或files)物件中包含透過表單上傳的檔案。

Tips:multipart/form-data是用來指定傳輸資料的特殊類型的,主要就是我們上傳的非文字的內容,例如圖片或mp3等等

const express = require('express')
const multer  = require('multer')
const app = express()
const storage = multer.diskStorage({
  //保存路径
  destination: function (req, file, cb) {
    cb(null, '/tmp/my-uploads')
    //注意这里的文件路径,不是相对路径,直接填写从项目根路径开始写就行了
  },
  //保存在 destination 中的文件名
  filename: function (req, file, cb) {    
    cb(null, file.fieldname + '-' + Date.now())
  }
})
const upload = multer({ storage: storage })
app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file 是 `avatar` 文件的信息
  // req.body 将具有文本域数据,如果存在的话
})
app.post('/photos/upload', upload.array('photos', 12), function (req, res, next) {
  // req.files 是 `photos` 文件数组的信息
  // req.body 将具有文本域数据,如果存在的话
})
const cpUpload = upload.fields([{ name: 'avatar', maxCount: 1 }, { name: 'gallery', maxCount: 8 }])
app.post('/cool-profile', cpUpload, function (req, res, next) {
  // req.files 是一个对象 (String -> Array) 键是文件名,值是文件数组
  // 例如:
  //  req.files['avatar'][0] -> File
  //  req.files['gallery'] -> Array
  // req.body 将具有文本域数据,如果存在的话
})

# multer(options)

Multer 接受一個options 對象,其中最基本的是dest 屬性,這將告訴Multer 將上傳檔案保存在哪裡。如果你省略 options 對象,這些檔案將會保存在記憶體中,永遠不會寫入磁碟。

通常,一般的網頁應用,只需要設定 dest 屬性,像這樣:

const upload = multer({ dest: 'uploads/' })

如果你想在上傳時進行更多的控制,你可以使用 storage 選項替代 dest。 Multer 具有 DiskStorage 和 MemoryStorage 兩個儲存引擎; 另外還可以從第三方獲得更多可用的引擎。

推薦學習:《nodejs影片教學

以上是node中multer是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn