前言:
express預設並不處理http請求體中的資料,對於普通請求體(json、二進位制、字串)資料,可以使用body-parser中介軟體。而檔案上傳(multipart/form-data請求),可以基於請求流處理,也可以使用formidable模組或multer中介軟體。
multer中介軟體:
multer是express官方推出的,用於node.jsmultipart/form-data請求資料處理的中介軟體。
它基於busboy構建,可以高效的處理檔案上傳,但並不處理multipart/form-data之外的使用者請求。
使用:
multer在解析完請求體後,會向request物件中新增乙個body物件和乙個file或files物件(上傳多個檔案時使用files物件 )。其中,body物件中包含所提交表單中的文字字段(如果有),而file(或files)物件中包含通過表單上傳的檔案。
方法:
引用multer模組後,我們會獲取到乙個頂級方法。該方法是乙個工廠函式,可以使用這個方法建立multer物件。它接受乙個選項物件,最基本的選項是dest,它告訴 multer 檔案的儲存位置。如果忽略該選項,檔案會被儲存在記憶體中,並且永遠不會寫入硬碟中。
multer解析完上傳檔案後,會被儲存為乙個包含以下欄位的物件:
fieldname - 表單提交的檔名(input控制項的name屬性)
originalname - 檔案在使用者裝置中的原始名稱
encoding - 檔案的編碼型別
mimetype - 檔案的mime型別
size - 檔案的大小
destination - 檔案的儲存目錄(diskstorage)
filename - 檔案在destination中的名稱(diskstorage)
path - 上傳檔案的全路徑(diskstorage)
buffer - 檔案物件的buffer(memorystorage)
.any()
- 接收所有檔案
接收請求中的所有檔案。上傳檔案陣列會被儲存在req.files中。
更多關於multer物件中的方法請參見
**示例:
const express=require('express');
const bodyparser=require('body-parser');
const multer=require('multer');
const fs=require('fs');
const pathlib=require('path');
var objmulter=multer();
var server=express();
server.use(objmulter.any());
server.post('/', function (req, res));
//1.獲取原始副檔名
//2.重新命名臨時檔案
});server.listen(8080);
express中介軟體
中介軟體的本質就是乙個請求處理方法 函式 該方法接收三個引數 request請求物件 response響應物件 next下乙個中介軟體 把使用者從請求到響應的整個過程分發到多個中介軟體去處理。同乙個請求所經過的中介軟體的請求物件和響應物件都是同乙個請求物件和相應物件 不關心請求路徑和請求方法的中介軟...
Express中介軟體
express是乙個路由和中介軟體web框架,其自身的功能很少 express應用程式本質上是一系列中介軟體函式呼叫。中介軟體功能是可以訪問請求物件 req 響應物件 res 和應用程式的請求 響應週期中的下乙個中介軟體功能的功能。下乙個中介軟體功能通常由名為的變數表示next。中介軟體功能可以執行...
express中介軟體
中介軟體的知識點 同乙個請求物件所經過的中介軟體都是同乙個請求物件和響應物件 如果沒有可以匹配的中介軟體,將會輸出 cannot get 路徑 console.log 111 res.end hello next console.log 222 res.end world next 控制台會輸出11...