ماژول Formidable یک ماژول بسیار خوب برای کار با بارگذاری فایل است.

ماژول Formidable را می توان با استفاده از NPM دانلود و نصب کرد:

C:\Users\Your Name>npm install formidable

بعد از اینکه ماژول Formidable را دانلود کردید، می توانید این ماژول را در هر برنامه قرار دهید:

var formidable = require('formidable');

آپلود فایل ها

حالا شما آماده اید تا در Node.js صفحه ایجاد کنید که به کاربر اجازه آپلود فایل ها را به کامپیوتر شما می دهد:

مرحله ۱: یک فرم آپلود ایجاد کنید

یک فایل Node.js ایجاد کنید که یک فرم HTML را با یک فیلد آپلود می نویسد:

مثال – این کد یک فرم 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);

مرحله ۲: فایل آپلود شده را تفسیر کنید

ماژول Formidable  را ضمیمه کنید تا قادر به تفسیر فایل آپلود شده پس از رسیدن به سرور باشید.

هنگامی که فایل آپلود و تفسیر می شود، در یک پوشه موقت در کامپیوتر شما قرار می گیرد.

مثال-  فایل را بارگذاری کرده و در یک پوشه موقت قرار دهید:

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

مرحله ۳: فایل را ذخیره کنید

هنگامی که یک فایل با موفقیت به سرور ارسال می شود، دریک پوشه موقت قرار می گیرد.

مسیر این پوشه در شیء “files” وجود دارد که به عنوان سومین آرگومان در فراخوانی  متد parse  قرارداده می شود.

برای انتقال فایل به پوشه مورد نظر خودتان، از ماژول File System استفاده کنید و فایل را تغییر نام دهید:

مثال – ماژول fs را ضمیمه کنید و فایل را به پوشه جاری منتقل کنید:

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);
نمایش قابل چاپ