閱讀更多系列文章請訪問我的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)
複製程式碼