沐鳴代理_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 安裝:

npm install --save multer


2.用法:

var multer = require(‘multer‘);
var upload = multer({...});


3.multer配置:

//1.進行Multer的自定義配置
var storage = multer.diskStorage({
//設置文件上傳的位置,cb(callback簡寫)
destination: function (req, file, cb) {
//上傳到path變量所指定的位置
cb(null, path);
},
//設置上傳文件名稱的操作
filename: function (req, file, cb) {
//對於文件名進行相關的操作
//獲取原始文件的擴展名
var extension = file.originalname.substr(file.originalname.lastIndexOf(‘.‘)+1).toLowerCase();
//生成新的文件名
var filename = uuid.v1() + ‘.‘ + extension;
cb(null, filename);
}
});
//2.使用自定義配置
var upload = multer({ storage: storage });


4.請求參數 (1)single(fifieldname) 接收以fifieldname命名的文件上傳,該文件的信息存儲在 req.file 內,如:

app.post(‘/single‘,upload.single(‘avater‘), (req, res) => {
  res.send({ message: ‘OK‘ });
});
// single它是Multer對象的請求參數名稱,avater指表單中input type="file"的name的屬性值

 (2)array(fieldname,[maxCount])

接收以fieldname命名的上傳文件數組,可通過maxCount參數限制上傳文件的最大數量,這些文件的信息存儲在 req.files 內,如:

app.post(‘/multiple‘,upload.array(‘album‘), (req, res) => {
  res.send({ message: ‘OK‘ });
});

 5.req.fifile及req.fifiles

req.fifile返回單文件上傳時的文件相關信息對象 req.fifiles返回多文件上傳時的文件相關信息數組 信息有:

originalname,上傳文件的原始名稱

fifilename,文件上傳后的名稱

size,上傳文件的字節數(以字節為單位)

mimetype,上傳文件的MIME類型

6.UUID UUID(Universally Unique Identififier),通用唯 一識別碼,其目的是為了讓分佈式系統中的所有元素都能存在唯一標識信息 — 文件名稱 格式 8-4-4-4-12的形態 安裝:npm install –save uuid 使用UUID:

//生成基於時間戳的
UUID uuid.v1();
//生成生成隨機數的
UUID uuid.v4();

站長推薦

1.雲服務推薦: 國內主流雲服務商,各類雲產品的最新活動,優惠券領取。地址:阿里雲騰訊雲華為雲

2.廣告聯盟: 整理了目前主流的廣告聯盟平台,如果你有流量,可以作為參考選擇適合你的平台點擊進入

鏈接: http://www.fly63.com/article/detial/8382