Altbilgi içeriğine atla
NODE YARDıM

Multer Node.js (Geliştiriciler İçin Nasıl Çalışır)

Günümüzdeki çevrimiçi geliştirme sahnesinde dosya yüklemelerini yönetmek ve PDF belgeleri üretmek birçok uygulama için standart gereksinimdir. IronPDF ve Multer'ın Node.js ortamında yeteneklerini özetlemek, bu gereksinimleri etkili bir şekilde ele almak için güçlü bir çözüm sunar.

Multer, dosya yüklemeleri için en çok kullanılan çok parçalı/form veri işlemeyi kolaylaştıran bir Node.js ara yazılımıdır. Büyük esnekliği sayesinde geliştiriciler, güvenli ve etkili dosya yüklemelerini garanti altına alacak dosya boyutu kısıtlamaları, depolama seçenekleri ve dosya filtrelemeleri belirleyebilir. Multer, uygulamalarına dosya yükleme işlevselliğini kolayca entegre etmek isteyen geliştiriciler için en iyi seçeneklerden biridir, çünkü Express.js ile kolayca entegre olur.

Tersine, IronPDF, programcıların HTML metni kullanarak PDF belgeleri oluşturmasına olanak tanıyan güçlü bir PDF oluşturma kütüphanesidir. JavaScript'in çalıştırılmasını, CSS stilini ve yazı tipi ve resim eklemeyi destekleyen birçok özelliğiyle, dinamik web bilgilerini profesyonel görünümlü PDF'lere dönüştürmek için mükemmel bir araçtır.

IronPDF ile PDF belgelerini oluşturmak ve Multer ile dosya yüklemelerini yönetmek için bu iki güçlü aracın nasıl kurulduğunu ve kullanıldığını göstererek sorunsuz bir işbirliğini ortaya koyacağız.

Multer Node.js Nedir?

Multer, dosya yüklemeleri için en çok kullanılan çok parçalı/form veri işlemeyi kolaylaştıran bir Node.js ara yazılımıdır. Web uygulamalarında dosya yükleme yeteneklerini güvenilir bir şekilde ele almak için bir yöntem sunar ve Express.js ile kolayca entegre olur. Sadece yetkili dosya türlerinin yüklendiğinden emin olmak için, Multer geliştiricilere dosya boyutu kısıtlamalarını belirleme, depolama seçeneklerini yapılandırma ve dosya filtrelemesi uygulama yeteneği verir.

Bu, sunucuya hem disk hem de bellek depolamasını destekleyerek dosyaları yönetme konusunda esneklik sağlar. Multer, aynı anda birden fazla dosyanın yüklenmesi gereken formlar için de mükemmeldir çünkü birden fazla dosyayı aynı anda işleyebilir. Her şey düşünüldüğünde, Multer dosya yükleme sürecini düzene sokarak, Node.js uygulamalarının kullanıcıların yüklediği materyalleri güvenli ve etkili bir şekilde işlemesini geliştirir.

Multer Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 1 - Multer Node.js

Multer'ın Node.js için Özellikleri

Dosya Depolama Seçenekleri

Multer, yüklenen dosyaları doğrudan diske kaydetme yeteneğine sahiptir. Disk depolama motoru, dosya adını ve hedef dizini sağlamanıza olanak tanır. Bu, özellikle gelecekteki kullanım için dosyaların kaydedilmesi gereken programlar için faydalıdır. Hafıza Depolama: Multer, dosyaları geçici kullanım için hafıza içinde tampon nesneleri olarak depolama kabiliyetine sahiptir. Bu, dosyaların disk üzerinde tutulmasına gerek olmayan ve hemen işlenebileceği durumlarda faydalıdır.

Dosya Boyutu Sınırları

Multer'in yüklenen dosyalar için ayarlamanıza izin verdiği boyut sınırlamaları, çok büyük dosyaların yüklenmesini önleyerek sunucu performansını korumanıza ve depolama kaynaklarını verimli bir şekilde yönetmenize yardımcı olabilir. Bunu gerçekleştirmek için sınırlama seçeneğini kullanabilirsiniz.

Dosya Filtreleme

Multer, hangi dosyaların kabul edileceğini yönetmenize olanak tanıyan bir fileFilter seçeneğine sahiptir. Bu fonksiyon, dosyanın MIME türünü ve diğer özelliklerini doğrulayabilir ve gerekliliklere uymayan dosyaları reddedebilir. Bu, yalnızca belirli türdeki dosyaların—örneğin belgeler ve resimlerin—gönderilmesini garanti eder.

Birden Fazla Dosyayı İşleme

Multer, aynı anda yüklenen birkaç dosyayı yönetebilir. Rotalar, dosyalar veya dosya dizileri içeren birden fazla alanı kabul edecek şekilde ayarlanabilir. Bu, kullanıcıların destekleyici belgeler ve profil resimleri gibi birden fazla dosyayı aynı anda yüklemeleri gerektiğinde formlar için yararlıdır.

Özelleştirilebilir Depolama Motorları

Multer, yerleşik disk ve bellek depolama çözümlerinin yanı sıra yeni depolama motorları tasarlamanıza olanak tanır. En iyi esneklik için, dosya yüklemelerini yönetmek için kendi mantığınızı oluşturabilir, dosyaların nerede ve nasıl kaydedileceğini belirleyebilirsiniz.

Express ile Kolay Entegrasyon

Multer, Express.js ile kolayca entegre olacak şekilde yapılmıştır. Express rotalarınızda ara yazılım olarak kullanarak web uygulamalarınıza dosya yükleme yeteneği eklemek basittir.

Çok Parçalı Verilerin Otomatik İşlenmesi

Multer, multipart/form-data'yı otomatik olarak ayrıştırarak, yüklenen dosyaları ve form verilerini req nesnesi üzerinde ulaşılabilir kılarak sunucu tarafı kodunuzda dosya yükleme işlemlerini daha basit hale getirir.

Tekli ve Çoklu Dosya Yükleme

Multer, bir veya daha fazla dosyanın yüklenmesini yönetmek için çeşitli yollar (tekil, dizi ve alanlar) sunar. Tek bir dosya işleyen yöntem, istek başına bir dosya ele alır. Dizi yöntemi, aynı alan adıyla birden fazla dosyayı destekler ve alanlar yöntemi, farklı alan adlarıyla birçok dosyayı işleyebilir.

Multer Node.js JS Oluşturma ve Yapılandırma

Aşağıdaki adımlar, bir Node.js uygulamasında Multer'ı oluşturmak ve ayarlamak için kullanılabilir:

Bağımlılıkları Kurun

Multer ve Express'i kurmak ilk adımdır. npm bunun için kullanılabilir:

npm install multer
npm install express
npm install multer
npm install express
SHELL

Multer'ı Yapılandırın

Multer'ı dosya yüklemelerini ele almak için .js dosyanızda yapılandırın. İşte ayrıntılı bir açıklama:

const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');

// Initialize Express
const app = express();

// Set up storage configuration for Multer
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
    cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); // Unique filename
  }
});

// Configure file filter function to allow only certain file types
const fileFilter = (req, file, cb) => {
  const allowedFileTypes = /jpeg|jpg|png|gif/;
  const mimetype = allowedFileTypes.test(file.mimetype);
  const extname = allowedFileTypes.test(path.extname(file.originalname).toLowerCase());
  if (mimetype && extname) {
    return cb(null, true);
  } else {
    cb(new Error('Only images are allowed!'));
  }
};

// Initialize Multer with storage, file size limit, and file filter options
const upload = multer({
  storage: storage,
  limits: { fileSize: 1024 * 1024 * 5 }, // 5 MB file size limit
  fileFilter: fileFilter
});

// Single file upload route
app.post('/upload-single', upload.single('profilePic'), (req, res) => {
  try {
    res.send('Single file uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Multiple files upload route
app.post('/upload-multiple', upload.array('photos', 5), (req, res) => {
  try {
    res.send('Multiple files uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Error handling middleware
app.use((err, req, res, next) => {
  if (err) {
    res.status(400).send({ error: err.message });
  }
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require('express');
const multer = require('multer');
const path = require('path');
const fs = require('fs');

// Initialize Express
const app = express();

// Set up storage configuration for Multer
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
    cb(null, file.fieldname + '-' + uniqueSuffix + path.extname(file.originalname)); // Unique filename
  }
});

// Configure file filter function to allow only certain file types
const fileFilter = (req, file, cb) => {
  const allowedFileTypes = /jpeg|jpg|png|gif/;
  const mimetype = allowedFileTypes.test(file.mimetype);
  const extname = allowedFileTypes.test(path.extname(file.originalname).toLowerCase());
  if (mimetype && extname) {
    return cb(null, true);
  } else {
    cb(new Error('Only images are allowed!'));
  }
};

// Initialize Multer with storage, file size limit, and file filter options
const upload = multer({
  storage: storage,
  limits: { fileSize: 1024 * 1024 * 5 }, // 5 MB file size limit
  fileFilter: fileFilter
});

// Single file upload route
app.post('/upload-single', upload.single('profilePic'), (req, res) => {
  try {
    res.send('Single file uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Multiple files upload route
app.post('/upload-multiple', upload.array('photos', 5), (req, res) => {
  try {
    res.send('Multiple files uploaded successfully');
  } catch (err) {
    res.status(400).send({ error: err.message });
  }
});

// Error handling middleware
app.use((err, req, res, next) => {
  if (err) {
    res.status(400).send({ error: err.message });
  }
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
JAVASCRIPT

Multer Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 2 - Dosya yüklemek için Multer kullanan MulterNode.js uygulaması

Depolama sistemini yapılandırın

  • hedef: Yüklenen dosyaların saklanacağı klasörü belirtir.
  • filename: Zaman damgası ve rastgele bir sayı kullanarak her yüklenen dosya için benzersiz bir dosya adı oluştururken orijinal dosya uzantısını korur.
  • Dosya Filtresi: Yüklenen dosyaların dosya türünü doğrulamak için bir seçenek. Bu örnekte yalnızca jpeg, jpg, png veya gif uzantılı resim dosyalarına izin verilir.

Multer'i Başlatın:

  • storage: Depolama yapılandırmasını açıklar.
  • sınırlamalar: İzin verilen en büyük dosya boyutunu tanımlar (bu örnekte 5 MB).
  • fileFilter: Bir dosya filtresi işlevini kullanır.

IronPDF Kullanımına Başlama

IronPDF PDF belgeleri oluşturmak için kullanıldığında ve Multer dosya yüklemelerini yönetmek için kullanıldığında, kullanıcı tarafından oluşturulan içeriği yönetmek ve bu içeriği düzgün bir şekilde formatlanmış PDF dosyalarına dönüştürmek için güçlü bir çözüm oluşturulur. Node.js uygulamasında bu iki kütüphanenin nasıl kurulacağı ve birleştirileceği aşağıda açıklanmıştır.

IronPDF Nedir?

IronPDF, PDF dosyalarının oluşturulmasını, düzenlenmesini ve yönetilmesini kolaylaştırmak için tasarlanmış bir uygulama kütüphaneleri setidir. Bu uygulama ile geliştiriciler HTML belgelerinden metin ve resim çıkarabilir, başlıklar ve filigranlar ekleyebilir, birçok PDF sayfasını birleştirebilir ve çeşitli diğer işlemleri gerçekleştirebilir. IronPDF'in kapsamlı belgeleri ve kullanıcı dostu API'si, geliştiricilerin yüksek kaliteli PDF belgeleri otomatik olarak oluşturmasını kolaylaştırır. IronPDF, belgelerin iş akışlarını geliştirmek ve belgeler, raporlar ve faturalar oluşturmak gibi çeşitli senaryolarda birinci sınıf kullanıcı deneyimleri sunmak için gereken tüm özellikleri ve işlevsellikleri içerir.

Multer Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 3 - IronPDF for Node.js: Node.js PDF Kütüphanesi

IronPDF Özellikleri

HTML metinleri, CSS ve JavaScript dahil olmak üzere, herhangi bir türdeki metinle başa çıkmanın hızlı ve basit bir yolu, onları PDF'ye dönüştürmektir.

PDF dosya birleştirme: Doküman yönetim görevlerini kolaylaştırmak için, birden fazla PDF dosyasını tek bir PDF dosyasında birleştirin.

Metin ve Görüntü Çıkarma: Ek veri işleme veya analiz için PDF dosyalarından metin ve görselleri çıkarın.

Filigran Eklemek: Güvenlik veya marka oluşturma nedenleriyle, PDF sayfalarına metin veya resim filigranları ekleyebilirsiniz.

Başlık ve Altbilgi Dahil Edin: PDF belgelerinin başlıkları ve altbilgileri, özelleştirilmiş bir mesaj veya sayfa numaraları eklemenize olanak tanır.

IronPDF Kurulumu

IronPDF işlevselliğini etkinleştirmek için gerekli Node.js paketlerini kurmak üzere node paket yöneticisini kullanın.

npm i @ironsoftware/ironpdf

Multer Node.js ile IronPDF Entegre Edin

PDF oluşturmak için IronPDF ve dosya yüklemelerini ele almak için Multer ayarlamak amacıyla app.js değiştirin.

const express = require('express');
const multer = require('multer');
const path = require('path');
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;

// Initialize Express
const app = express();

// Set up Multer storage configuration
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}-${file.originalname}`); // Unique filename
  }
});

const upload = multer({ storage: storage });

// Single file upload route
app.post('/upload-single', upload.single('file'), async (req, res) => {
  try {
    // Read the uploaded file
    const filePath = path.join(__dirname, 'uploads', req.file.filename);

    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>Uploaded File Content</title>
        </head>
        <body>
          <h1>Uploaded File Content</h1>
          <img src="${filePath}" alt="image" width="500" height="600">
        </body>
      </html>
    `;

    // Initialize IronPDF
    const pdf = await document.fromHtml(htmlContent);

    // Save PDF to file
    const pdfPath = path.join(__dirname, 'uploads', `${Date.now()}-output.pdf`);
    await pdf.saveAs(pdfPath);

    // Respond to the client
    res.send(`File uploaded and PDF generated successfully! <a href="/download-pdf?path=${pdfPath}">Download PDF</a>`);
  } catch (err) {
    res.status(500).send({ error: err.message });
  }
});

// Route to download generated PDF
app.get('/download-pdf', (req, res) => {
  const filename = req.query.path;
  res.download(filename);
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
const express = require('express');
const multer = require('multer');
const path = require('path');
const IronPdf = require('@ironsoftware/ironpdf');
const document = IronPdf.PdfDocument;
var config = IronPdf.IronPdfGlobalConfig;

// Initialize Express
const app = express();

// Set up Multer storage configuration
const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/'); // Directory to save uploaded files
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}-${file.originalname}`); // Unique filename
  }
});

const upload = multer({ storage: storage });

// Single file upload route
app.post('/upload-single', upload.single('file'), async (req, res) => {
  try {
    // Read the uploaded file
    const filePath = path.join(__dirname, 'uploads', req.file.filename);

    // Create HTML content for PDF
    const htmlContent = `
      <html>
        <head>
          <title>Uploaded File Content</title>
        </head>
        <body>
          <h1>Uploaded File Content</h1>
          <img src="${filePath}" alt="image" width="500" height="600">
        </body>
      </html>
    `;

    // Initialize IronPDF
    const pdf = await document.fromHtml(htmlContent);

    // Save PDF to file
    const pdfPath = path.join(__dirname, 'uploads', `${Date.now()}-output.pdf`);
    await pdf.saveAs(pdfPath);

    // Respond to the client
    res.send(`File uploaded and PDF generated successfully! <a href="/download-pdf?path=${pdfPath}">Download PDF</a>`);
  } catch (err) {
    res.status(500).send({ error: err.message });
  }
});

// Route to download generated PDF
app.get('/download-pdf', (req, res) => {
  const filename = req.query.path;
  res.download(filename);
});

// Start the server
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
JAVASCRIPT

Sağlanan Node.js kodunda Multer ve IronPDF'yi entegre ederek, dosya yüklemelerini yönetmek ve PDF belgeleri üretmek için güvenilir bir sistem oluşturuyoruz. Multer, yüklenen her dosya için benzersiz bir dosya adı ve hedef dizin vererek, Express framework'ü kullanarak multipart/form-data dosya yüklemelerini işlemek için bir disk depolama yapılandırması ile yapılandırılır. Multer, kullanıcılar tarafından yüklenen dosyaları /upload-single rota aracılığıyla kaydeder ve sunucu bu dosyaların içeriğini inceler.

Multer Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 4 - Multer kullanarak dosyaları yükleyin, ardından yüklenen dosyayı (.jpg görüntüsü) HTML içeriğine ekleyin ve IronPDF kullanarak PDF'ye dönüştürün

Ardından, bu içerik temel bir HTML şablonuna entegre edilir. Bu HTML, IronPDF'e iletilir ve bir PDF dosyası oluşturur ve bu dosya uploads dizininde saklanır. Sonunda, oluşturulan PDF'yi indirmek için bir bağlantı sunucu tarafından sağlanır. Bu entegrasyon, Multer'in dosya yüklemelerini ne kadar etkili bir şekilde yönetebileceğini ve IronPDF'in bu yüklemeleri yüksek kaliteli PDF'lere dönüştürerek bir Node.js uygulaması içinde sorunsuz dosya yönetimi ve belge oluşturma sağladığını göstermektedir.

Multer Node.js (Geliştiriciler İçin Nasıl Çalışır): Şekil 5 - IronPDF kullanılarak oluşturulan Çıktı PDF'i

Sonuç

Sonuç olarak, kullanıcı tarafından oluşturulan içeriği düzenlemek ve bunu cilalı belgelere dönüştürmek için tam bir çözüm, Node.js uygulamasında dosya yükleme için Multer ile PDF oluşturma için IronPDF'in birleştirilmesiyle sağlanır. Dosya boyutu sınırlamaları, dosya filtreleme ve dosya depolama yapılandırması gibi özelliklerle, Multer dosya yüklemeyi yönetmeyi kolaylaştırır. Diğer yandan, IronPDF, özelleştirme seçenekleri ve çeşitli stil öğeleri desteği sunarak, HTML bilgilerini yüksek kaliteli PDF belgelerine dönüştürmeyi mümkün kılar.

Bu iki kütüphane, kullanıcıların dosya göndermesine ve bunların otomatik olarak estetik açıdan hoş PDF belgelerine dönüştürülmesine olanak tanıyan esnek uygulamalar oluşturmak için birleştirilebilir. Bu entegrasyon, fatura, sertifika, rapor ve daha fazlasının oluşturulması sürecini basitleştirerek belge oluşturma işlemlerinin verimliliğini artırır ve kullanıcı deneyimini geliştirir.

İstemciler ve son kullanıcılar için zengin özelliklere sahip, premium yazılım çözümleri sağlamak, IronPDF'i kurumsal uygulama geliştirme yığınıza entegre ederek daha kolay hale gelmiştir. Ayrıca, bu sağlam temel, projeleri, backend sistemlerini ve süreç iyileştirmesini kolaylaştıracaktır.

IronPDF.

Diğer Iron Software ürünleri hakkında daha fazla bilgi edinin. Bu teknolojiler, zengin belgelendirmeleri, canlı çevrimiçi geliştirici topluluğu ve sık yapılan revizyonlar nedeniyle, çağdaş yazılım geliştirme projeleri için harika bir seçenektir.

Darrius Serrant
Tam Yığın Yazılım Mühendisi (WebOps)

Darrius Serrant, Miami Üniversitesi'nden Bilgisayar Bilimi alanında Lisans Derecesine sahip ve Iron Software'de Tam Yığın WebOps Pazarlama Mühendisi olarak çalışıyor. Genç yaşlardan itibaren kodlamaya çekildi, bilgisayar bilimi hem gizemli hem de erişilebilir olarak görüldü ve bu özellik, yaratıcılık ...

Daha Fazla Oku

Iron Destek Ekibi

Haftada 5 gün, 24 saat çevrimiçiyiz.
Sohbet
E-posta
Beni Ara