Upload File Pada Node.js

Modul Formidable

Ada modul yang sangat bagus untuk bekerja dengan upload file, yang disebut “Formidable”.

Modul yang formidable dapat diunduh dan diinstal menggunakan NPM:

C:\Users\Your Name>npm install formidable

Setelah kamu mengunduh modul Formidable, kamu dapat memasukkan modul tersebut ke dalam aplikasi apa pun:

var formidable = require('formidable');

Upload File

Sekarang kamu siap membuat halaman web di Node.js yang memungkinkan pengguna mengunggah file ke komputer kamu:

Langkah 1: Membuat Form Upload

Buatlah file Node.js yang menulis formulir HTML, dengan bidang upload:

Contoh

Kode ini akan menghasilkan bentuk HTML:

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);
Langkah 2: Parsing File yang di upload

Sertakan modul formidable untuk dapat mengurai file yang diunggah setelah mencapai server.

Ketika file diupload dan diurai, itu akan ditempatkan di folder sementara di komputer kamu.

Contoh

File akan diupload, dan ditempatkan di folder sementara:

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);

Langkah 3: Simpan File

Ketika sebuah file berhasil diupload ke server, file ditempatkan di folder sementara.

Path ke direktori ini dapat ditemukan di objek “files”, yang diteruskan sebagai argumen ketiga dalam fungsi parse()callback metode.

Untuk memindahkan file ke folder pilihan kamu, gunakan modul Sistem File, dan ganti nama file:

Contoh

Sertakan modul fs, dan pindahkan file ke folder saat ini:

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);