Express檔案上傳之Multer

foreverpx發表於2014-11-27

​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主頁。

Multer

文章作者:foreverpx
文章原文連結:Express檔案上傳之Multer

相關文章