Multer详解(Node.js中间件)

Multer详解(Node.js中间件)本文介绍了 Multer 一个 Node js 用于处理 multipart form data 表单上传的中间件 详细讲解了如何配置存储引擎 文件上传限制及错误处理机制

大家好,欢迎来到IT知识分享网。

介绍

使用(摘自官方解释)

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 两个存储引擎; 另外还可以从第三方获得更多可用的引擎。

storage(储存引擎)

.single(fieldname)

接受一个以 fieldname 命名的文件。这个文件的信息保存在 req.file

.none()

只接受文本域

.fields(fields)

limits(限制)

var upload = multer({ 
    storage: storage, limits: { 
    fileSize: maxSize } }).single('bestand'); 

错误处理机制

如果你想捕捉 multer 发出的错误,你可以自己调用中间件程序。如果你想捕捉 Multer 错误,你可以使用 multer 对象下的 MulterError 类 (即 err instanceof multer.MulterError)。

const multer = require('multer') const upload = multer().single('avatar') app.post('/profile', function (req, res) { 
    upload(req, res, function (err) { 
    if (err instanceof multer.MulterError) { 
    // 发生错误 } else if (err) { 
    // 发生错误 } // 一切都好 }) }) 

小广告~

vx关注:A返x小助手 (购物返现、外卖大额领券、高额打车券,优惠点餐,低价电影票等)

在这里插入图片描述

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114948.html

(0)
上一篇 2025-12-05 21:00
下一篇 2025-12-05 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信