مدیریت آپلود فایل در Node.js با مولتر: راهنمای جامع

Summarize this content to 400 words in Persian Lang
در دنیای توسعه وب، مدیریت آپلود فایل یک نیاز رایج است. چه تصاویر نمایه، اسناد یا تصاویر، بسیاری از برنامه ها نیاز به آپلود و ذخیره فایل ها به طور ایمن و کارآمد دارند. هنگام استفاده از Node.js با Express، کفال یکی از بهترین کتابخانه های موجود برای رسیدگی به این کار به راحتی است.
در این وبلاگ، همه چیزهایی را که باید در مورد استفاده از Multer در Node.js بدانید، از جمله نصب، پیکربندی، گزینههای ذخیرهسازی، فیلتر کردن فایلها و موارد استفاده متداول را با مثالهای کد پوشش خواهیم داد.
فهرست مطالب
مولتر چیست؟
نصب و راه اندازی
راه اندازی مولتر با Express
آشنایی با گزینه های ذخیره سازی
ذخیره سازی دیسک
ذخیره سازی حافظه
فضای ذخیره سازی ابری (مثال S3)
فیلتر کردن فایل ها بر اساس نوع
محدود کردن اندازه فایل
مدیریت بارگذاری چندین فایل
مدیریت خطا در مولتر
موارد استفاده در دنیای واقعی
نتیجه گیری
مولتر چیست؟
مولتر یک میان افزار برای مدیریت است multipart/form-data، یک فرمت رایج برای آپلود فایل ها در برنامه های کاربردی وب است. به طور خاص برای کار با آن طراحی شده است اکسپرس و با ارائه موارد زیر به مدیریت آپلود فایل کمک می کند:
ذخیره سازی فایل: گزینه های ذخیره سازی قابل تنظیم برای ذخیره فایل ها در سرور یا سایر خدمات ذخیره سازی.
فیلتر کردن فایل: امکان تنظیم محدودیت در انواع فایل ها را فراهم می کند.
محدود کردن اندازه: به محدود کردن اندازه فایل برای جلوگیری از آپلود بیش از حد داده کمک می کند.
نصب و راه اندازی
برای شروع کار با مولتر، آن را از طریق npm نصب کنید:
npm install multer
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
راه اندازی مولتر با Express
بیایید با تنظیم یک کنترل کننده آپلود فایل با استفاده از Multer در یک برنامه Express شروع کنیم. نحوه شروع به این صورت است:
const express = require(‘express’);
const multer = require(‘multer’);
const app = express();
// Configure Multer for basic usage
const upload = multer({ dest: ‘uploads/’ }); // Destination folder for uploaded files
// Single File Upload Route
app.post(‘/upload’, upload.single(‘file’), (req, res) => {
res.send(‘File uploaded successfully!’);
});
app.listen(3000, () => console.log(‘Server running on port 3000’));
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در این مثال:
upload.single(‘file’): این میان افزار یک فایل واحد آپلود شده با کلید را پردازش می کند file.
فایل های آپلود شده در uploads/ پوشه
آشنایی با گزینه های ذخیره سازی
مولتر دو گزینه ذخیره سازی اولیه را ارائه می دهد:
ذخیره سازی دیسک: فایل ها را به صورت محلی روی سرور ذخیره می کند.
ذخیره سازی حافظه: فایل ها را در حافظه به عنوان اشیاء بافر (مفید برای پردازش فایل ها در حافظه) ذخیره می کند.
1. ذخیره سازی دیسک
ذخیره سازی دیسک کنترل بیشتری بر نامگذاری فایل و مسیرهای مقصد فراهم می کند.
const storage = multer.diskStorage({
destination: (req, file, cb) => cb(null, ‘uploads/’), // Folder location
filename: (req, file, cb) => {
const uniqueSuffix = Date.now() + ‘-‘ + Math.round(Math.random() * 1E9);
cb(null, uniqueSuffix + ‘-‘ + file.originalname);
}
});
const upload = multer({ storage: storage });
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
destination: پوشه را برای آپلود فایل مشخص می کند.
filename: به سفارشی سازی نام فایل اجازه می دهد (به عنوان مثال، اضافه کردن یک مهر زمانی برای منحصر به فرد بودن).
2. ذخیره سازی حافظه
در ذخیره سازی حافظه، فایل ها به عنوان بافر ذخیره می شوند، که برای فایل های کوتاه مدت یا برای مدیریت آپلود بدون ذخیره فایل ها در دیسک مفید است.
const upload = multer({ storage: multer.memoryStorage() });
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
فضای ذخیره سازی ابری: مولتر با AWS S3
برای برنامه های تولید، ذخیره فایل ها به طور مستقیم در فضای ذخیره سازی ابری (مانند AWS S3) اغلب ترجیح داده می شود. برای ادغام با S3، استفاده کنید multer-s3.
npm install aws-sdk multer-s3
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
const aws = require(‘aws-sdk’);
const multerS3 = require(‘multer-s3’);
aws.config.update({ region: ‘your-region’ });
const s3 = new aws.S3();
const upload = multer({
storage: multerS3({
s3: s3,
bucket: ‘your-s3-bucket-name’,
metadata: (req, file, cb) => cb(null, { fieldName: file.fieldname }),
key: (req, file, cb) => cb(null, Date.now().toString() + ‘-‘ + file.originalname)
})
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این راهاندازی فایلها را مستقیماً در سطل S3 مشخص شده آپلود میکند و فضای ذخیرهسازی محلی را دور میزند.
فیلتر کردن فایل ها بر اساس نوع
میتوانید فایلها را بر اساس نوع فیلتر کنید تا فقط فرمتهای فایل خاص (مثلاً تصاویر) را بپذیرید. استفاده کنید fileFilter گزینه
const fileFilter = (req, file, cb) => {
// Accept only image files
if (file.mimetype.startsWith(‘image/’)) {
cb(null, true); // Accept file
} else {
cb(new Error(‘Only image files are allowed!’), false); // Reject file
}
};
const upload = multer({
storage: storage,
fileFilter: fileFilter
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
محدود کردن اندازه فایل
برای جلوگیری از آپلود فایل های حجیم، a را تنظیم کنید limits گزینه در اینجا نحوه محدود کردن اندازه فایل به 1 مگابایت آورده شده است:
const upload = multer({
storage: storage,
limits: { fileSize: 1 * 1024 * 1024 } // 1 MB limit
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مدیریت بارگذاری چندین فایل
مولتر همچنین از بارگذاری چند فایل پشتیبانی می کند:
// For multiple files with the same field name
app.post(‘/uploadMultiple’, upload.array(‘files’, 5), (req, res) => {
res.send(‘Files uploaded successfully!’);
});
// For multiple fields with different field names
const uploadMultiple = multer().fields([
{ name: ‘file1’, maxCount: 1 },
{ name: ‘file2’, maxCount: 2 }
]);
app.post(‘/uploadMultipleFields’, uploadMultiple, (req, res) => {
res.send(‘Multiple files uploaded successfully!’);
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
upload.array(‘files’, 5): امکان آپلود حداکثر 5 فایل در یک قسمت را فراهم می کند.
upload.fields: مدیریت فایل ها با نام های فیلد مختلف را فعال می کند.
مدیریت خطا در مولتر
مدیریت صحیح خطا برای یک تجربه کاربری روان بسیار مهم است. مولتر میتواند چندین نوع خطا ایجاد کند، که میتوانید به صورت زیر آنها را مدیریت کنید:
app.post(‘/upload’, (req, res) => {
upload.single(‘file’)(req, res, (err) => {
if (err instanceof multer.MulterError) {
// Multer-specific error
res.status(500).send(‘Multer error: ‘ + err.message);
} else if (err) {
// General error
res.status(500).send(‘Error: ‘ + err.message);
} else {
res.send(‘File uploaded successfully!’);
}
});
});
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
موارد استفاده در دنیای واقعی
در اینجا برخی از برنامه های کاربردی دنیای واقعی برای استفاده از مولتر آورده شده است:
آپلود تصویر نمایه: به کاربران اجازه می دهد تا تصاویر نمایه را آپلود کنند، آنها را در سرور یا در S3 ذخیره کنند و مسیر فایل را در پایگاه داده ذخیره کنند.
ذخیره سازی اسناد: اسناد ارسال شده توسط کاربر (به عنوان مثال، رزومه، فایل های PDF) را با ذخیره سازی سفارشی و تنظیمات فیلتر ذخیره کنید.
فایل های رسانه ای در تجارت الکترونیک: فروشندگان را قادر می سازد تا تصاویر محصول را آپلود کنند، نوع فایل و اندازه آن را محدود کرده و آنها را در فضای ذخیره سازی ابری برای بازیابی آسان ذخیره کنند.
نتیجه گیری
مولتر با ارائه گزینههای ذخیرهسازی انعطافپذیر، فیلتر کردن فایلها و رسیدگی به الزامات آپلود مختلف، از یک فایل گرفته تا چندین فایل، مدیریت فایلها را در برنامههای Node.js ساده میکند. چه در حال ساخت یک برنامه کوچک یا یک برنامه کاربردی در سطح تولید با نیازهای مدیریت فایل باشید، مولتر شما را تحت پوشش قرار می دهد.
کد نویسی مبارک! 🚀
در دنیای توسعه وب، مدیریت آپلود فایل یک نیاز رایج است. چه تصاویر نمایه، اسناد یا تصاویر، بسیاری از برنامه ها نیاز به آپلود و ذخیره فایل ها به طور ایمن و کارآمد دارند. هنگام استفاده از Node.js با Express، کفال یکی از بهترین کتابخانه های موجود برای رسیدگی به این کار به راحتی است.
در این وبلاگ، همه چیزهایی را که باید در مورد استفاده از Multer در Node.js بدانید، از جمله نصب، پیکربندی، گزینههای ذخیرهسازی، فیلتر کردن فایلها و موارد استفاده متداول را با مثالهای کد پوشش خواهیم داد.
فهرست مطالب
- مولتر چیست؟
- نصب و راه اندازی
- راه اندازی مولتر با Express
-
آشنایی با گزینه های ذخیره سازی
- ذخیره سازی دیسک
- ذخیره سازی حافظه
- فضای ذخیره سازی ابری (مثال S3)
- فیلتر کردن فایل ها بر اساس نوع
- محدود کردن اندازه فایل
- مدیریت بارگذاری چندین فایل
- مدیریت خطا در مولتر
- موارد استفاده در دنیای واقعی
- نتیجه گیری
مولتر چیست؟
مولتر یک میان افزار برای مدیریت است multipart/form-data
، یک فرمت رایج برای آپلود فایل ها در برنامه های کاربردی وب است. به طور خاص برای کار با آن طراحی شده است اکسپرس و با ارائه موارد زیر به مدیریت آپلود فایل کمک می کند:
- ذخیره سازی فایل: گزینه های ذخیره سازی قابل تنظیم برای ذخیره فایل ها در سرور یا سایر خدمات ذخیره سازی.
- فیلتر کردن فایل: امکان تنظیم محدودیت در انواع فایل ها را فراهم می کند.
- محدود کردن اندازه: به محدود کردن اندازه فایل برای جلوگیری از آپلود بیش از حد داده کمک می کند.
نصب و راه اندازی
برای شروع کار با مولتر، آن را از طریق npm نصب کنید:
npm install multer
راه اندازی مولتر با Express
بیایید با تنظیم یک کنترل کننده آپلود فایل با استفاده از Multer در یک برنامه Express شروع کنیم. نحوه شروع به این صورت است:
const express = require('express');
const multer = require('multer');
const app = express();
// Configure Multer for basic usage
const upload = multer({ dest: 'uploads/' }); // Destination folder for uploaded files
// Single File Upload Route
app.post('/upload', upload.single('file'), (req, res) => {
res.send('File uploaded successfully!');
});
app.listen(3000, () => console.log('Server running on port 3000'));
در این مثال:
-
upload.single('file')
: این میان افزار یک فایل واحد آپلود شده با کلید را پردازش می کندfile
. - فایل های آپلود شده در
uploads/
پوشه
آشنایی با گزینه های ذخیره سازی
مولتر دو گزینه ذخیره سازی اولیه را ارائه می دهد:
- ذخیره سازی دیسک: فایل ها را به صورت محلی روی سرور ذخیره می کند.
- ذخیره سازی حافظه: فایل ها را در حافظه به عنوان اشیاء بافر (مفید برای پردازش فایل ها در حافظه) ذخیره می کند.
1. ذخیره سازی دیسک
ذخیره سازی دیسک کنترل بیشتری بر نامگذاری فایل و مسیرهای مقصد فراهم می کند.
const storage = multer.diskStorage({
destination: (req, file, cb) => cb(null, 'uploads/'), // Folder location
filename: (req, file, cb) => {
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
cb(null, uniqueSuffix + '-' + file.originalname);
}
});
const upload = multer({ storage: storage });
-
destination
: پوشه را برای آپلود فایل مشخص می کند. -
filename
: به سفارشی سازی نام فایل اجازه می دهد (به عنوان مثال، اضافه کردن یک مهر زمانی برای منحصر به فرد بودن).
2. ذخیره سازی حافظه
در ذخیره سازی حافظه، فایل ها به عنوان بافر ذخیره می شوند، که برای فایل های کوتاه مدت یا برای مدیریت آپلود بدون ذخیره فایل ها در دیسک مفید است.
const upload = multer({ storage: multer.memoryStorage() });
فضای ذخیره سازی ابری: مولتر با AWS S3
برای برنامه های تولید، ذخیره فایل ها به طور مستقیم در فضای ذخیره سازی ابری (مانند AWS S3) اغلب ترجیح داده می شود. برای ادغام با S3، استفاده کنید multer-s3
.
npm install aws-sdk multer-s3
const aws = require('aws-sdk');
const multerS3 = require('multer-s3');
aws.config.update({ region: 'your-region' });
const s3 = new aws.S3();
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'your-s3-bucket-name',
metadata: (req, file, cb) => cb(null, { fieldName: file.fieldname }),
key: (req, file, cb) => cb(null, Date.now().toString() + '-' + file.originalname)
})
});
این راهاندازی فایلها را مستقیماً در سطل S3 مشخص شده آپلود میکند و فضای ذخیرهسازی محلی را دور میزند.
فیلتر کردن فایل ها بر اساس نوع
میتوانید فایلها را بر اساس نوع فیلتر کنید تا فقط فرمتهای فایل خاص (مثلاً تصاویر) را بپذیرید. استفاده کنید fileFilter
گزینه
const fileFilter = (req, file, cb) => {
// Accept only image files
if (file.mimetype.startsWith('image/')) {
cb(null, true); // Accept file
} else {
cb(new Error('Only image files are allowed!'), false); // Reject file
}
};
const upload = multer({
storage: storage,
fileFilter: fileFilter
});
محدود کردن اندازه فایل
برای جلوگیری از آپلود فایل های حجیم، a را تنظیم کنید limits
گزینه در اینجا نحوه محدود کردن اندازه فایل به 1 مگابایت آورده شده است:
const upload = multer({
storage: storage,
limits: { fileSize: 1 * 1024 * 1024 } // 1 MB limit
});
مدیریت بارگذاری چندین فایل
مولتر همچنین از بارگذاری چند فایل پشتیبانی می کند:
// For multiple files with the same field name
app.post('/uploadMultiple', upload.array('files', 5), (req, res) => {
res.send('Files uploaded successfully!');
});
// For multiple fields with different field names
const uploadMultiple = multer().fields([
{ name: 'file1', maxCount: 1 },
{ name: 'file2', maxCount: 2 }
]);
app.post('/uploadMultipleFields', uploadMultiple, (req, res) => {
res.send('Multiple files uploaded successfully!');
});
-
upload.array('files', 5)
: امکان آپلود حداکثر 5 فایل در یک قسمت را فراهم می کند. -
upload.fields
: مدیریت فایل ها با نام های فیلد مختلف را فعال می کند.
مدیریت خطا در مولتر
مدیریت صحیح خطا برای یک تجربه کاربری روان بسیار مهم است. مولتر میتواند چندین نوع خطا ایجاد کند، که میتوانید به صورت زیر آنها را مدیریت کنید:
app.post('/upload', (req, res) => {
upload.single('file')(req, res, (err) => {
if (err instanceof multer.MulterError) {
// Multer-specific error
res.status(500).send('Multer error: ' + err.message);
} else if (err) {
// General error
res.status(500).send('Error: ' + err.message);
} else {
res.send('File uploaded successfully!');
}
});
});
موارد استفاده در دنیای واقعی
در اینجا برخی از برنامه های کاربردی دنیای واقعی برای استفاده از مولتر آورده شده است:
- آپلود تصویر نمایه: به کاربران اجازه می دهد تا تصاویر نمایه را آپلود کنند، آنها را در سرور یا در S3 ذخیره کنند و مسیر فایل را در پایگاه داده ذخیره کنند.
- ذخیره سازی اسناد: اسناد ارسال شده توسط کاربر (به عنوان مثال، رزومه، فایل های PDF) را با ذخیره سازی سفارشی و تنظیمات فیلتر ذخیره کنید.
- فایل های رسانه ای در تجارت الکترونیک: فروشندگان را قادر می سازد تا تصاویر محصول را آپلود کنند، نوع فایل و اندازه آن را محدود کرده و آنها را در فضای ذخیره سازی ابری برای بازیابی آسان ذخیره کنند.
نتیجه گیری
مولتر با ارائه گزینههای ذخیرهسازی انعطافپذیر، فیلتر کردن فایلها و رسیدگی به الزامات آپلود مختلف، از یک فایل گرفته تا چندین فایل، مدیریت فایلها را در برنامههای Node.js ساده میکند. چه در حال ساخت یک برنامه کوچک یا یک برنامه کاربردی در سطح تولید با نیازهای مدیریت فایل باشید، مولتر شما را تحت پوشش قرار می دهد.
کد نویسی مبارک! 🚀