[Node.js] Phần 9: Tải tập tin lên trong Node.js

359 lượt xem

Trong bài viết, chúng ta sẽ tìm hiểu cách tải các tập tin từ máy tính lên server thông qua module Formidable (tiếng Anh từ Formidable có nghĩa là vượt trội, ghê gớm, đáng sợ).

Module Formidable
Đây là module hữu ích để thực thi việc tải tập tin lên (upload file). Để tải về và cài đặt module Formidable, chúng ta có thể dùng lệnh cmd như sau:

C:\Users\Your Name>npm install formidable

Sau khi tải về module Formidable, bạn nhúng module này vào ứng dụng bằng phương thức require() như sau:

var formidable = require('formidable');

Tải tập tin lên
Trong mục này, bạn sẽ học cách tạo 1 trang web trong Node.js cho phép người dùng tải tập tin lên server.

Bước 1: Tạo một Upload Form
Tạo một tập tin Node.js mà sẽ xuất ra mã HTML với trường tải lên (upload field)

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/html'});
  res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
  res.write('<input type="file" name="filetoupload"><br>');
  res.write('<input type="submit">');
  res.write('</form>');
  return res.end();
}).listen(8080);

Bước 2: Phân tích tập tin tải lên

Nhúng module Formidable vào để có thể phân tích tập tin tải lên khi đến server. Khi tập tin được tải lên và phân tích, server sẽ tạo 1 bản sao lưu trữ tập tin này.

var http = require('http');
var formidable = require('formidable');

http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      res.write('File uploaded');
      res.end();
    });
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080);

Bước 3: Lưu tập tin

Khi tập tin được tải lên server thành công, nó sẽ được đặt trong thư mục tạm thời. Đường dẫn đến thư mục có thể tìm thấy ở đối tượng “files“, là đối số thứ hai trong hàm callback của phương thức parse(). Để di chuyển tập tin đến thư mục bạn muốn, bạn hãy dùng module File System (fs) và thay thế tên tập tin.

var http = require('http');
var formidable = require('formidable');
var fs = require('fs');

http.createServer(function (req, res) {
  if (req.url == '/fileupload') {
    var form = new formidable.IncomingForm();
    form.parse(req, function (err, fields, files) {
      var oldpath = files.filetoupload.path;
      var newpath = 'C:/Users/Your Name/' + files.filetoupload.name;
      fs.rename(oldpath, newpath, function (err) {
        if (err) throw err;
        res.write('File uploaded and moved!');
        res.end();
      });
 });
  } else {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
    res.write('<input type="file" name="filetoupload"><br>');
    res.write('<input type="submit">');
    res.write('</form>');
    return res.end();
  }
}).listen(8080);

Kết luận: Bạn đã biết cách tạo 1 ứng dụng đơn giản để tải tập tin lên server thông qua các ví dụ trong Node.js ở bài này. Mời bạn tiếp tục theo dõi các bài tiếp theo.

Bình luận Facebook

Để lại bình luận

1 Comment on "[Node.js] Phần 9: Tải tập tin lên trong Node.js"

Notify of
avatar
1000
Sort by:   newest | oldest | most voted
trackback

[…] Đăng ngày 15 Tháng Bảy, 201718 Tháng Bảy, 2017 bởi dammio 30 lượt xem (adsbygoogle = window.adsbygoogle || []).push({}); << Bài trước Trang mục lục Bài tiếp theo >> […]