English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
تحميل ملف Node.js– في هذا الدرس Node.js، سنتعلم كيفية تحميل ملف من عميل الويب إلى خادم Node.js. بمعنى آخر، يمكن للعميل تحميل ملف إلى خادم Node.js.
لتحميل ملف إلى خادم Node.js، اتبع الإرشادات التالية خطوة بخطوة:
في هذا المثال، سنستخدم وحدات http، fs وقوية.http: لخدمة النشاطات على الخادم.النواة fs: حفظ الملف المرسل في مكان معين على الخادم.قوية: تحليل بيانات نموذج html. إذا لم يتم تثبيت هذه الوحدات بعد، يمكنك استخدام NPM لتحميلها على الفور. قم بتشغيل الأوامر التالية في الترميز النهائي لتثبيت هذه الوحدات:
npm install http npm install fs npm install formidable |
استخدام النموذج التالي لتحضير صفحة HTML (upload_file.html) التي تحتوي على علامات الإدخال المخصصة لتحميل الملف وإرسال النموذج.
<form action="fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filetoupload"> <input type="submit" value="Upload"> </form>
إنشاء خادم HTTP يستمع إلى порт 8086 (يمكنك تغيير المنفذ) ويعرض على URLين كما يلي:
http.createServer(function (req, res) { if (req.url == '/uploadform') { // إذا كان عنوان URL يحتوي على " / uploadform " // ملء الرد بالملف HTML الذي يحتوي على النموذج المرسل else if (req.url == '/fileupload') { // إذا كان عنوان URL يتضمن " / fileupload " // استخدام وحدات قوية // قراءة بيانات النموذج (بما في ذلك الملفات المرسلة) // و حفظ الملف في مكان. } }).listen(8086);
استخدام وحدات قوية، تحليل عناصر النموذج وتخزين الملف في مكان معين. بعد تحميل الملف، قد يظهر لك رسالة تخبرك بأن تحميل الملف تم بنجاح. في البداية، يتم حفظ الملف في مكان مؤقت. يمكننا استخدام طريقة fs.rename() لتحريك الملف إلى المكان المطلوب باستخدام المسار الجديد.
var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { // oldpath: مجلد التخزين المؤقت الذي تم فيه حفظ الملف var oldpath = files.filetoupload.path; var newpath = upload_path + files.filetoupload.name; // نسخ الملف إلى موقع جديد fs.rename(oldpath, newpath, function (err) { if (err) throw err; // قد تستخدم صفحة HTML أخرى للإجابة res.write('تم تحميل الملف ونقله!'); res.end(); }); });
以下是Node.js上传文件的完整工作示例
此示例有两个文件,如下所示:
upload_file.html
<!DOCTYPE html> <html> <head> <title>Upload File</title> <style> body{text-align:center;} form{display:block;border:1px solid black;padding:20px;} </style> </head> <body> <h1>Upload files to Node.js Server</h1> <form action="fileupload" method="post" enctype="multipart/form-data"> <input type="file" name="filetoupload"> <input type="submit" value="Upload"> </form> </body> </html
var http = require('http'); var fs = require('fs'); var formidable = require('formidable'); // 包含上传表单的html文件 var upload_html = fs.readFileSync("upload_file.html"); // 将其替换为保存上传文件的位置 var upload_path = "/home/arjun/workspace/nodejs/upload_file/"; http.createServer(function (req, res) { if (req.url == '/uploadform') { res.writeHead(200); res.write(upload_html); return res.end(); else if (req.url == '/fileupload') { var form = new formidable.IncomingForm(); form.parse(req, function (err, fields, files) { // oldpath: مجلد التخزين المؤقت الذي تم فيه حفظ الملف var oldpath = files.filetoupload.path; var newpath = upload_path + files.filetoupload.name; // نسخ الملف إلى موقع جديد fs.rename(oldpath, newpath, function (err) { if (err) throw err; // قد تستخدم صفحة HTML أخرى للإجابة res.write('تم تحميل الملف ونقله!'); res.end(); }); }); } }).listen(8086);
تشغيل ملف سكريبت Node.js في نافذة الترميز التي تحتوي على Node.js
arjun@w3codebox:~/workspace/nodejs/upload_file$ node nodejs-upload-file.js
يتم حفظ الملفات المرسلة بجانب ملف node.js nodejs-upload-file.js. يمكنك تغيير هذا الموقع في ملف سكريبت Node.js.
افتح متصفح الويب (عميل HTTP)، ثم انقر على URL http://localhost:8086/uploadform
انقر على استعراض.
اختر ملفًا ثم انقر على "فتح".
حاليًا، تم تحميل الملف في النموذج. انقر على زر Upload في Node.js لتحليل عناصر النموذج وتخزين الملف.
تحقق من ملف سكريبت Node.js بجانب خادم Node.js.
arjun@w3codebox:~/workspace/nodejs/upload_file$ ls blur1.jpg nodejs-upload-file.js upload_file.html
في هذا درس Node.js - تحميل الملفات إلى الخادم باستخدام Node.js، لقد تعلمنا كيفية استخدام الملفات القوية والمحولات على الإنترنت لتحميل الملفات إلى خادم Node.js.