busboy vs formidable vs multer vs express-fileupload vs connect-multiparty vs connect-busboy
"Dosya Yükleme Kütüphaneleri" npm Paketleri Karşılaştırması
1 Yıl
busboyformidablemulterexpress-fileuploadconnect-multipartyconnect-busboyBenzer Paketler:
Dosya Yükleme Kütüphaneleri Nedir?

Node.js dosya yükleme kütüphaneleri, web uygulamalarında kullanıcıların dosya yüklemesine olanak tanıyan araçlardır. Bu kütüphaneler, HTTP istekleri aracılığıyla gelen dosyaları alır, işler ve sunucuya kaydeder. Her biri farklı özellikler ve kullanım senaryoları sunar, bu nedenle projenizin ihtiyaçlarına göre en uygun olanını seçmek önemlidir. Örneğin, multer çoklu dosya yükleme ve dosya boyutu sınırlamaları gibi özellikler sunarken, formidable akış tabanlı bir yaklaşım benimser ve büyük dosyalarla çalışırken daha verimlidir.

npm İndirme Trendi
GitHub Stars Sıralaması
İstatistik Detayı
Paket
İndirmeler
Stars
Boyut
Issues
Yayın Tarihi
Lisans
busboy16,908,8632,944124 kB34--
formidable12,651,429-204 kB-il y a 3 moisMIT
multer7,700,58211,86229.5 kB242il y a 8 joursMIT
express-fileupload377,7711,550119 kB22il y a 20 joursMIT
connect-multiparty50,489349-0il y a 7 ansMIT
connect-busboy35,5661574.57 kB0--
Özellik Karşılaştırması: busboy vs formidable vs multer vs express-fileupload vs connect-multiparty vs connect-busboy

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ından busboy 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ği

    const 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ği

    const 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ği

    const 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ği

    const 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ği

    const 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ği

    const 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');
    });
    
Nasıl Seçilir: busboy vs formidable vs multer vs express-fileupload vs connect-multiparty vs connect-busboy
  • busboy:

    busboy kullanın, eğer akış tabanlı bir dosya yükleme çözümüne ihtiyacınız varsa ve dosyaları yüklerken hafıza kullanımını en aza indirmek istiyorsanız. Bu kütüphane, büyük dosyaları işlerken verimlidir ve düşük seviyeli bir API sunar.

  • formidable:

    formidable kullanın, eğer büyük dosyaları yüklerken hafıza verimliliğine önem veriyorsanız. Bu kütüphane, dosyaları akışlar aracılığıyla işler ve büyük dosyalarla çalışırken daha az bellek kullanır.

  • multer:

    multer kullanın, eğer çoklu dosya yükleme, dosya boyutu sınırlamaları ve dosya filtreleme gibi gelişmiş özelliklere ihtiyacınız varsa. Bu kütüphane, özellikle Express.js uygulamaları için tasarlanmıştır ve dosya yükleme işlemlerini kolaylaştırır.

  • express-fileupload:

    express-fileupload kullanın, eğer basit ve hızlı bir dosya yükleme çözümüne ihtiyacınız varsa. Bu kütüphane, Express.js ile kolayca entegre olur ve hızlı bir şekilde dosya yükleme işlevselliği ekler.

  • connect-multiparty:

    connect-multiparty kullanın, eğer çoklu dosya yükleme ve form verilerini aynı anda işleyebilme yeteneğine ihtiyacınız varsa. Bu kütüphane, dosyaları ve form alanlarını paralel olarak işler.

  • connect-busboy:

    connect-busboy kullanın, eğer busboy'un özelliklerini Express.js uygulamanıza entegre etmek istiyorsanız. Bu kütüphane, busboy'un akış tabanlı dosya yükleme yeteneklerini Express.js ile birleştirir.