Rumah >hujung hadapan web >tutorial js >Mengendalikan Muat Naik Fail dalam Node.js dengan Multer: Panduan Komprehensif
Dalam dunia pembangunan web, pengendalian muat naik fail adalah keperluan biasa. Sama ada gambar profil, dokumen atau imej, banyak aplikasi perlu memuat naik dan menyimpan fail dengan selamat dan cekap. Apabila menggunakan Node.js dengan Express, Multer ialah salah satu perpustakaan terbaik yang tersedia untuk mengendalikan tugas ini dengan lancar.
Dalam blog ini, kami akan merangkumi semua yang anda perlu ketahui tentang menggunakan Multer dalam Node.js, termasuk pemasangan, konfigurasi, pilihan storan, penapisan fail dan kes penggunaan biasa dengan contoh kod.
Multer ialah perisian tengah untuk mengendalikan data berbilang bahagian/bentuk, format yang biasa digunakan untuk memuat naik fail dalam aplikasi web. Ia direka khusus untuk berfungsi dengan Express dan membantu dalam menguruskan muat naik fail dengan menyediakan:
Untuk bermula dengan Multer, pasangkannya melalui npm:
npm install multer
Mari kita mulakan dengan menyediakan pengendali muat naik fail asas menggunakan Multer dalam aplikasi Express. Begini caranya untuk bermula:
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'));
Dalam contoh ini:
Multer menyediakan dua pilihan storan utama:
Storan cakera memberikan lebih kawalan ke atas penamaan fail dan laluan destinasi.
npm install multer
Dalam storan memori, fail disimpan sebagai penimbal, yang berguna untuk fail jangka pendek atau untuk mengendalikan muat naik tanpa menyimpan fail ke cakera.
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'));
Untuk aplikasi pengeluaran, menyimpan fail terus pada storan awan (seperti AWS S3) selalunya lebih disukai. Untuk menyepadukan dengan S3, gunakan multer-s3.
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 });
const upload = multer({ storage: multer.memoryStorage() });
Persediaan ini akan memuat naik fail terus ke baldi S3 yang ditentukan, memintas storan setempat.
Anda boleh menapis fail mengikut jenis untuk menerima hanya format fail tertentu (cth., imej). Gunakan pilihan FileFilter.
npm install aws-sdk multer-s3
Untuk menghalang fail besar daripada dimuat naik, tetapkan pilihan had. Begini cara mengehadkan saiz fail kepada 1MB:
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) }) });
Multer juga menyokong pelbagai muat naik fail:
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 });
Pengendalian ralat yang betul adalah penting untuk pengalaman pengguna yang lancar. Multer boleh membuang beberapa jenis ralat, yang boleh anda tangani seperti ini:
const upload = multer({ storage: storage, limits: { fileSize: 1 * 1024 * 1024 } // 1 MB limit });
Berikut ialah beberapa aplikasi dunia sebenar untuk menggunakan Multer:
Multer memudahkan pengendalian fail dalam aplikasi Node.js dengan menyediakan pilihan storan yang fleksibel, penapisan fail dan pengendalian pelbagai keperluan muat naik, daripada fail tunggal kepada berbilang fail. Sama ada anda sedang membina apl kecil atau aplikasi peringkat pengeluaran dengan keperluan pengendalian fail, Multer telah membantu anda.
Selamat Pengekodan! ?
Atas ialah kandungan terperinci Mengendalikan Muat Naik Fail dalam Node.js dengan Multer: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!