Express文件上傳之Multer
Multer是一個nodejs中間件,用來處理http提交multipart/form-data,也就是文件上傳。它是在busboy的基礎上開發的。
在我看來,Multer是衆多上傳中間件裏面使用起來最優雅的,且能滿足大部分的上傳要求。API也相對來說較爲直觀和簡單。
安裝
1
|
npm install multer --save
|
基本用法
1 2 3 4 5
|
var express = require('express') var multer = require('multer') var app = express() app.use(multer({ dest: './uploads/'}))
|
1 2 3 4
|
router.use(function(req,res,next){ console.log(req.files); //JSON Object next(); });
|
從上面的代碼可以看到,multer作爲一箇中間件傳入了app.use,當有上傳請求到來時,express會攔截此請求並通過multer組件完成上傳操作。在multer初始化方法中傳入的是配置對象,我們可以在裏面配置我們自定義的參數,例如“文件大小限制”,“文件數量限制”等等。
不僅可以添加限制,還能給上傳註冊事件,例如:
1 2 3 4 5 6 7 8 9 10 11
|
//上傳開始時觸發 onFileUploadStart:function(file){ console.log("upload start"); } //上傳結束時觸發 onFileUploadComplete:function(file){ console.log("upload complete"); } ......
|
我們在真正接受上傳的action中,通過req中的files獲得文件的基本信息,此信息爲JSON格式,常用的信息如下。
originalname - 文件原名
path - 上傳文件存放的路徑
size - 文件大小
更多詳細的屬性和配置請參見Multer的Github主頁。
文章作者:foreverpx
文章原文鏈接:Express文件上傳之Multer