Node.js的Formidable模組的使用

來源:互聯網
上載者:User

標籤:返回   byte   url   字元   ror   服務   ida   檔案   res   

今天總結了下Node.js的Formidable模組的使用,下面做一些簡要的說明。

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() {}); 當所有的請求已經接收到,並且所有的檔案都已上傳到伺服器中,該事件會觸發。此時可以發送請求到用戶端。

Node.js的Formidable模組的使用

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.