大家好,欢迎来到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
