พอดีโค้ชพลมีการทำระบบง่ายๆ ไว้ใช้เองในบ้าน ส่วนหนึ่งคือระบบจัดการดาวน์โหลดไฟล์ (File Downloading) ที่เตรียมไว้ให้ทำงานตอนที่โค้ชพลออกไปข้างนอก
หลังจากใช้ Node JS ใน MEAN Stack และ Meteor เลยนำส่วนของ Node JS มาแชร์ไว้ในนี้สักหน่อย เป็นโค้ดแบบง่ายๆ ถ้าเรียนรู้ Node JS กับโค้ชพลใน YouTube แล้วก็เข้าใจได้ไม่ยากเลย
ขั้นตอนมีดังนี้:
- เรียกใช้แพคเกจจัดการ http และ file stream
- กำหนดที่อยู่ไฟล์ในเครื่อง
- ใช้ http.get ดาวน์โหลดไฟล์
- ปิดการเขียนไฟล์
- ใส่ console.log เพื่อให้มันเป็นมิตรกับเราหน่อย
1. เรียกใช้แพคเกจจัดการ http และ file stream
ในขั้นแรกเราจะใช้ package เพิ่มเติมที่ Node JS มีให้อยู่แล้ว นั่นก็คือ http และ fs (File Stream)
var http = require('http'); var fs = require('fs');
2. กำหนดที่อยู่ไฟล์ในเครื่อง
จากนั้นเราจะระบุที่อยู่ให้ไฟล์ ที่จะถูกดาวน์โหลดให้มาอยู่ในเครื่อง ครับเช่นในที่นี้ผมอยากได้ไฟล์ชื่อ teerasej.pdf มาไว้ในเครื่อง
var file = fs.createWriteStream("teerasej.pdf");
3. ใช้ http.get ดาวน์โหลดไฟล์
มาถึงพระเอกของเราแล้ว เจ้า http จะมี method ที่ชื่อว่า get() อยู่ครับ โดยมันให้เราระบุ URL Address ของไฟล์เป้าหมาย และ function สำหรับจัดการ file stream
ยกตัวอย่างเช่นไฟล์ที่ผมต้องการ ตอนนี้อยู่บน www.yes.com ก็ระบุลงไปตรงๆ ได้แบบนี้
var request = http.get("http://www.yes.com/teerasej.pdf", function(response) { });
และเรียกใช้ method ชื่อ pipe() ของ response เพื่อส่ง file stream เข้าไปที่ไฟล์ปลายทางที่เราเตรียมไว้
var request = http.get("http://www.yes.com/teerasej.pdf", function(response) { response.pipe(file); });
4. ปิดการเขียนไฟล์
เมื่อกระบวนการเสร็จสมบูรณ์ ก็อย่าลืมขั้นตอนสำคัญ เพื่อปิดการเขียน file stream ของเรานะครับ โดยใช้ method ชื่อ on ในการจับ event ที่ชื่อ finish
var request = http.get("http://www.yes.com/teerasej.pdf", function(response) { response.pipe(file); file.on('finish', function() { file.close(); }); });
5. ใส่ console.log เพื่อให้มันเป็นมิตรกับเราหน่อย
จากนั้นผมจะชอบใส่ console.log() เพื่อดูการทำงานของมันทั้งตอนเริ่มดาวน์โหลดไฟล์ และปิดการดาวน์โหลดครับ
โค้ดที่สมบูรณ์แล้วจะเป็นดังด้านล่าง
/** * Created by teerasej on 6/8/2015 AD. */ var http = require('http'); var fs = require('fs'); console.log("Download start..."); var file = fs.createWriteStream("teerasej.pdf"); var request = http.get("http://www.yes.com/teerasej.pdf", function(response) { response.pipe(file); file.on('finish', function() { file.close(); console.log('Download finished.'); }); });
ไม่อยากใช่ไหมละครับ ติดตามอัพเดตใหม่ๆ ได้ทาง Fan page ของผม และ YouTube channel นะ
เหมาะสำหรับคนทำเว็บ, เริ่มต้น JavaScript ES6 และ Angular เข้าใจง่าย, ใช้ได้จริง สอบถาม หรือติดต่อจัดอบรมโทร 083-071-3373 โปรหน้าฝน! เรียนรอบสด รับคอร์สออนไลน์มูลค่ากว่า 5800 บาทฟรี!เปิดอบรมสร้าง Cross Platform Mobile Application ด้วย Ionic Framework
อ้างอิง