Akış Tabanlı İşleme
- busboy:
busboy
, dosyaları akışlar aracılığıyla işler, bu da büyük dosyaların yüklenmesi sırasında hafıza kullanımını en aza indirir. Bu özellik, büyük dosyalarla çalışırken bellek sızıntılarını önlemeye yardımcı olur. - formidable:
formidable
, dosyaları akışlar aracılığıyla işler, bu da büyük dosyaların yüklenmesi sırasında bellek kullanımını en aza indirir. Bu özellik, büyük dosyalarla çalışırken bellek sızıntılarını önlemeye yardımcı olur. - multer:
multer
, dosyaları yüklerken akış tabanlı bir işlem yapmaz, ancak dosyaları parçalara ayırarak işler. Bu, büyük dosyaların yüklenmesi sırasında hafıza kullanımını kontrol altında tutmaya yardımcı olur. - express-fileupload:
express-fileupload
, dosyaları yüklerken akış tabanlı bir işlem yapmaz, bu da büyük dosyalar için hafıza sorunlarına yol açabilir. Ancak, basit ve hızlı bir çözüm sunar. - connect-multiparty:
connect-multiparty
, dosyaları ve form verilerini paralel olarak işler, ancak akış tabanlı bir yaklaşım benimsemez. Bu, hafıza verimliliği açısındanbusboy
kadar etkili değildir. - connect-busboy:
connect-busboy
,busboy
'un akış tabanlı işleme yeteneklerini korur ve bunları Express.js ile entegre eder. Bu sayede, büyük dosyaları yüklerken hafıza verimliliği sağlanır.
Çoklu Dosya Yükleme Desteği
- busboy:
busboy
, çoklu dosya yüklemeyi destekler, ancak bunu yönetmek için ek kod yazmanız gerekebilir. Kütüphane, her dosyayı ayrı bir akış olarak işler. - formidable:
formidable
, çoklu dosya yüklemeyi destekler, ancak her dosyayı ayrı bir akış olarak işler. Bu, çoklu dosya yükleme işlemlerini yönetmek için ek kod gerektirebilir. - multer:
multer
, çoklu dosya yüklemeyi kolayca destekler ve bunu yapılandırmak için basit bir API sunar. Ayrıca, her dosya için ayrı sınırlamalar ve filtreler ayarlamanıza olanak tanır. - express-fileupload:
express-fileupload
, çoklu dosya yüklemeyi destekler, ancak bu özellik varsayılan olarak kapalıdır ve manuel olarak etkinleştirilmesi gerekir. - connect-multiparty:
connect-multiparty
, çoklu dosya yüklemeyi yerel olarak destekler ve dosyaları ve form verilerini aynı anda işler. Bu, çoklu dosya yükleme işlemlerini daha basit hale getirir. - connect-busboy:
connect-busboy
,busboy
'un çoklu dosya yükleme desteğini korur ve bunu Express.js uygulamalarında kullanmayı kolaylaştırır.
Dosya Boyutu Sınırlamaları
- busboy:
busboy
, dosya boyutu sınırlamaları koymak için ek kod yazmanız gerekir. Kütüphane, dosya boyutunu kontrol etmez, bu nedenle sınırlamaları uygulamak geliştiriciye kalmıştır. - formidable:
formidable
, dosya boyutu sınırlamaları koymak için yerleşik bir destek sunar. Bu, dosya yükleme işlemleri sırasında boyut sınırlamalarını yönetmeyi kolaylaştırır. - multer:
multer
, dosya boyutu sınırlamaları koymak için yerleşik bir destek sunar. Bu, büyük dosyaların yüklenmesini önlemek için kullanılabilir ve her dosya için ayrı sınırlamalar ayarlamanıza olanak tanır. - express-fileupload:
express-fileupload
, dosya boyutu sınırlamaları koymak için basit bir yapılandırma sağlar. Bu özellik, büyük dosyaların yüklenmesini önlemek için kullanılabilir. - connect-multiparty:
connect-multiparty
, dosya boyutu sınırlamaları koymak için yerleşik bir destek sunar. Bu, dosya yükleme işlemleri sırasında boyut sınırlamalarını yönetmeyi kolaylaştırır. - connect-busboy:
connect-busboy
,busboy
'un dosya boyutu sınırlamaları ile ilgili eksikliklerini gidermez. Sınırlamaları uygulamak için yine ek kod yazılması gerekir.
Hafıza Kullanımı
- busboy:
busboy
, hafıza kullanımını en aza indirmek için tasarlanmıştır. Dosyaları akışlar aracılığıyla işler, bu da büyük dosyaların yüklenmesi sırasında bellek tüketimini kontrol altında tutar. - formidable:
formidable
, hafıza kullanımını en aza indirmek için tasarlanmıştır. Dosyaları akışlar aracılığıyla işler, bu da büyük dosyaların yüklenmesi sırasında bellek tüketimini kontrol altında tutar. - multer:
multer
, hafıza kullanımını optimize etmez. Dosyaları yüklerken belleğe alır, ancak dosya boyutu sınırlamaları ve filtreleme gibi özellikler sayesinde bellek kullanımını kontrol altında tutmaya yardımcı olabilir. - express-fileupload:
express-fileupload
, büyük dosyalarla çalışırken hafıza sorunlarına yol açabilir. Kütüphane, dosyaları yüklerken tüm dosyayı belleğe alır. - connect-multiparty:
connect-multiparty
, hafıza kullanımını optimize etmez. Dosyaları ve form verilerini paralel olarak işler, bu da bellek tüketimini artırabilir. - connect-busboy:
connect-busboy
,busboy
'un hafıza verimliliğini korur ve bunu Express.js uygulamalarında kullanmayı kolaylaştırır.
Kolay Kullanım: Kod Örnekleri
- busboy:
busboy
ile dosya yükleme örneğiconst Busboy = require('busboy'); const express = require('express'); const app = express(); app.post('/upload', (req, res) => { const busboy = new Busboy({ headers: req.headers }); busboy.on('file', (fieldname, file, filename, encoding, mimetype) => { console.log(`Yüklenen dosya: ${filename}`); file.pipe(fs.createWriteStream(`./uploads/${filename}`)); }); busboy.on('finish', () => { res.send('Dosya yüklendi!'); }); req.pipe(busboy); }); app.listen(3000, () => { console.log('Sunucu 3000 portunda çalışıyor'); });
- formidable:
formidable
ile dosya yükleme örneğiconst express = require('express'); const formidable = require('formidable'); const app = express(); app.post('/upload', (req, res) => { const form = new formidable.IncomingForm(); form.parse(req, (err, fields, files) => { console.log('Yüklenen dosyalar:', files); res.send('Dosya yüklendi!'); }); }); app.listen(3000, () => { console.log('Sunucu 3000 portunda çalışıyor'); });
- multer:
multer
ile dosya yükleme örneğiconst express = require('express'); const multer = require('multer'); const app = express(); const upload = multer({ dest: 'uploads/' }); app.post('/upload', upload.single('file'), (req, res) => { console.log(`Yüklenen dosya: ${req.file.originalname}`); res.send('Dosya yüklendi!'); }); app.listen(3000, () => { console.log('Sunucu 3000 portunda çalışıyor'); });
- express-fileupload:
express-fileupload
ile dosya yükleme örneğiconst express = require('express'); const fileUpload = require('express-fileupload'); const app = express(); app.use(fileUpload()); app.post('/upload', (req, res) => { const file = req.files.file; file.mv(`./uploads/${file.name}`, (err) => { if (err) return res.status(500).send(err); res.send('Dosya yüklendi!'); }); }); app.listen(3000, () => { console.log('Sunucu 3000 portunda çalışıyor'); });
- connect-multiparty:
connect-multiparty
ile dosya yükleme örneğiconst express = require('express'); const multiparty = require('connect-multiparty'); const app = express(); const multipartyMiddleware = multiparty(); app.post('/upload', multipartyMiddleware, (req, res) => { const files = req.files; const fields = req.body; console.log('Yüklenen dosyalar:', files); console.log('Form alanları:', fields); res.send('Dosyalar yüklendi!'); }); app.listen(3000, () => { console.log('Sunucu 3000 portunda çalışıyor'); });
- connect-busboy:
connect-busboy
ile dosya yükleme örneğiconst express = require('express'); const connectBusboy = require('connect-busboy'); const app = express(); app.use(connectBusboy()); app.post('/upload', (req, res) => { req.busboy.on('file', (fieldname, file, filename) => { console.log(`Yüklenen dosya: ${filename}`); file.pipe(fs.createWriteStream(`./uploads/${filename}`)); }); req.busboy.on('finish', () => { res.send('Dosya yüklendi!'); }); }); app.listen(3000, () => { console.log('Sunucu 3000 portunda çalışıyor'); });