Nodejs教程17:multiparty

LeeChen發表於2019-03-07

閱讀更多系列文章請訪問我的GitHub部落格,示例程式碼請訪問這裡

multiparty

上一節雖然完成了完整的檔案上傳流程,但實際工作中不可能自己從頭開發所有功能,這樣效率很低。

我們可以嘗試使用第三方庫來完成POST請求的處理,如multiparty

multiparty demo

通過如下例子,可以測試一下multiparty的功能。

它會在field事件中,將資料資訊的欄位名和值返回。在file事件中,將檔案的欄位名和資訊返回。

上傳成功後,會在指定的資料夾建立一個上傳的檔案,並會將檔案重新命名(如:IqUHkFe0u2h2TsiBztjKxoBR.jpg),以防止重名。

若上傳出現失敗,已儲存的檔案會自動刪除。

close事件表示表單資料全部解析完成,使用者可以在其中處理已經接收到的資訊。

示例程式碼:/lesson17/server.js

const http = require('http')
const multiparty = require('multiparty')

const server = http.createServer((req, res) => {
  const form = new multiparty.Form({
    uploadDir: './upload' // 指定檔案儲存目錄
  })

  form.parse(req) // 將請求引數傳入,multiparty會進行相應處理

  form.on('field', (name, value) => { // 接收到資料引數時,觸發field事件
    console.log(name, value)
  })

  form.on('file', (name, file, ...rest) => { // 接收到檔案引數時,觸發file事件
    console.log(name, file)
  })

  form.on('close', () => {  // 表單資料解析完成,觸發close事件
    console.log('表單資料解析完成')
  })
})

server.listen(8080)
複製程式碼

相關文章