1) 建立Formidable.IncomingForm對象
var form = new formidable.IncomingForm()
2) form.encoding = 'utf-8' 設置表單域的編碼
3) form.uploadDir = "/my/dir"; 設置上傳文件存放的文件夾,默認爲系統的臨時文件夾,能夠使用fs.rename()來改變上傳文件的存放位置和文件名
4) form.keepExtensions = false; 設置該屬性爲true能夠使得上傳的文件保持原來的文件的擴展名。
5) form.type 只讀,根據請求的類型,取值'multipart' or 'urlencoded'
6) form.maxFieldsSize = 2 * 1024 * 1024; 限制全部存儲表單字段域的大小(除去file字段),若是超出,則會觸發error事件,默認爲2M
7) form.maxFields = 1000 設置能夠轉換多少查詢字符串,默認爲1000
8) form.hash = false; 設置上傳文件的檢驗碼,能夠有兩個取值'sha1' or 'md5'.
9) form.multiples = false; 開啓該功能,當調用form.parse()方法時,回調函數的files參數將會是一個file數組,數組每個成員是一個File對象,此功能須要 html5中multiple特性支持。
10) form.bytesReceived 返回服務器已經接收到當前表單數據多少字節
11) form.bytesExpected 返回將要接收到當前表單全部數據的大小
12) form.parse(request, [callback]) 該方法會轉換請求中所包含的表單數據,callback會包含全部字段域和文件信息,如:
form.parse(req, function(err, fields, files) {
// ...
});
13) form.onPart(part); 你能夠重載處理multipart流的方法,這樣作的話會禁止field和file事件的發生,你將不得不本身處理這些事情,如:
form.onPart = function(part) {
part.addListener('data', function() {
// ...
});
}
若是你只想讓formdable處理一部分事情,你能夠這樣作:
form.onPart = function(part) {
if (!part.filename) {
// 讓formidable處理全部非文件部分
form.handlePart(part);
}
}
14) formidable.File對象
A. file.size = 0 上傳文件的大小,若是文件正在上傳,表示已上傳部分的大小
B. file.path = null 上傳文件的路徑。若是不想讓formidable產生一個臨時文件夾,能夠在fileBegain事件中修改路徑
C. file.name = null 上傳文件的名字
D. file.type = null 上傳文件的mime類型
E. file.lastModifiedDate = null 時間對象,上傳文件最近一次被修改的時間
F. file.hash = null 返回文件的hash值
G. 能夠使用JSON.stringify(file.toJSON())來格式化輸出文件的信息
15) form.on('progress', function(bytesReceived, bytesExpected) {}); 當有數據塊被處理以後會觸發該事件,對於建立進度條很是有用。
16) form.on('field', function(name, value) {}); 每當一個字段/值對已經收到時會觸發該事件
17) form.on('fileBegin', function(name, file) {}); 在post流中檢測到任意一個新的文件便會觸發該事件
18) form.on('file', function(name, file) {}); 每當有一對字段/文件已經接收到,便會觸發該事件
19) form.on('error', function(err) {}); 當上傳流中出現錯誤便會觸發該事件,當出現錯誤時,若想要繼續觸發request的data事件,則必須手動調用request.resume()方法
20) form.on('aborted', function() {}); 當用戶停止請求時會觸發該事件,socket中的timeout和close事件也會觸發該事件,當該事件觸發以後,error事件也會觸發
21) form.on('end', function() {}); 當全部的請求已經接收到,而且全部的文件都已上傳到服務器中,該事件會觸發。此時能夠發送請求到客戶端。
注:本文譯自https://www.npmjs.com/package/formidable