Node JS

วิธีดาวน์โหลดไฟล์ด้วย Node JS

เรื่องที่เกี่ยวข้อง - ,

พอดีโค้ชพลมีการทำระบบง่ายๆ ไว้ใช้เองในบ้าน ส่วนหนึ่งคือระบบจัดการดาวน์โหลดไฟล์ (File Downloading) ที่เตรียมไว้ให้ทำงานตอนที่โค้ชพลออกไปข้างนอก

หลังจากใช้ Node JS ใน MEAN Stack และ Meteor เลยนำส่วนของ Node JS มาแชร์ไว้ในนี้สักหน่อย เป็นโค้ดแบบง่ายๆ ถ้าเรียนรู้ Node JS กับโค้ชพลใน YouTube แล้วก็เข้าใจได้ไม่ยากเลย

ขั้นตอนมีดังนี้:

  1. เรียกใช้แพคเกจจัดการ http  และ file stream 
  2. กำหนดที่อยู่ไฟล์ในเครื่อง
  3. ใช้ http.get  ดาวน์โหลดไฟล์
  4. ปิดการเขียนไฟล์
  5. ใส่ 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 นะ

เปิดอบรมสร้าง Cross Platform Mobile Application ด้วย Ionic Framework

เหมาะสำหรับคนทำเว็บ, เริ่มต้น JavaScript ES6 และ Angular เข้าใจง่าย, ใช้ได้จริง

สอบถาม หรือติดต่อจัดอบรมโทร 083-071-3373

โปรหน้าฝน! เรียนรอบสด รับคอร์สออนไลน์มูลค่ากว่า 5800 บาทฟรี!

อ้างอิง

Loading Facebook Comments ...
Menu