مشخصات مقاله
آموزش آپلود فایل در Node.js با استفاده از ماژول Formidable
یکی از قابلیتهای مهم Node.js ، امکان آپلود فایل به سرور است. در این مقاله، نحوه استفاده از ماژول Formidable برای آپلود فایلها در Node.js را بررسی خواهیم کرد.
نصب و راهاندازی ماژول Formidable
برای آپلود فایلها در Node.js، ابتدا باید ماژول Formidable را نصب کنید. این ماژول به شما اجازه میدهد تا فایلهای آپلود شده را پردازش و ذخیره کنید. برای نصب ماژول، از دستور زیر استفاده کنید:
C:\Users\Your Name>npm install formidable
پس از این که ماژول Formidable را نصب و آماده کردید، می توانید با استفاده از تابع ()require همانند کد زیر، آن را به پروژه خود اضافه کنید :
var formidable = require('formidable');
ایجاد فرم HTML برای آپلود فایل
در مرحله بعد، یک فرم HTML ساده ایجاد میکنیم که به کاربر اجازه میدهد تا فایلی را برای آپلود انتخاب کند. این فرم به وسیله یک سرور Node.js رندر میشود:
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);
این فرم از متد POST برای ارسال فایل استفاده میکند و دادهها را به آدرس /fileupload ارسال میکند.
پردازش فایل آپلود شده
با استفاده از ماژول 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);
در این کد، فایل آپلود شده به صورت خودکار در یک پوشه موقت ذخیره میشود.
ذخیره فایل در مسیر مورد نظر
پس از پردازش فایل آپلود شده، میتوان آن را به مسیر دلخواه منتقل کرد. برای این کار از ماژول 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);