Ir para o conteúdo do rodapé
AJUDA DO NODE

Multer Node.js (Como funciona para desenvolvedores)

O gerenciamento de uploads de arquivos e a geração de documentos PDF são requisitos padrão para muitos aplicativos no cenário atual de desenvolvimento online. Resumindo as capacidades do IronPDF e do Multer em um ambiente Node.js, obtemos uma solução robusta para lidar eficazmente com esses requisitos.

Multer é um middleware for Node.js que facilita o processamento de multipart/form-data — formato usado principalmente para upload de arquivos. Graças à sua grande flexibilidade, os desenvolvedores podem especificar restrições de tamanho de arquivo, opções de armazenamento e filtragem de arquivos para garantir uploads de arquivos seguros e eficazes. O Multer é uma excelente opção para desenvolvedores que desejam integrar facilmente a funcionalidade de upload de arquivos em seus aplicativos, devido à sua simplicidade de integração com o Express.js.

Por outro lado, o IronPDF é uma poderosa biblioteca para criação de PDFs que permite aos programadores criar documentos PDF usando texto HTML. Com suas inúmeras funcionalidades, incluindo suporte para execução de JavaScript , estilização CSS e incorporação de fontes e imagens, é a ferramenta perfeita para transformar informações dinâmicas da web em PDFs com aparência profissional.

Vamos demonstrar a perfeita cooperação entre essas duas ferramentas poderosas, mostrando como configurar e utilizar o IronPDF para criar documentos PDF e o Multer para gerenciar o envio de arquivos em uma aplicação Node.js

O que é Multer Node.js?

Multer é um middleware for Node.js que facilita o processamento de multipart/form-data — usado principalmente para uploads de arquivos. Oferece um método confiável para lidar com recursos de upload de arquivos em aplicações web e se integra facilmente ao Express.js. Para garantir que apenas tipos de arquivo autorizados sejam carregados, o Multer oferece aos desenvolvedores a capacidade de especificar restrições de tamanho de arquivo, configurar opções de armazenamento e aplicar filtragem de arquivos.

Isso confere ao servidor flexibilidade no gerenciamento de arquivos, suportando armazenamento tanto em disco quanto em memória. O Multer também é perfeito para formulários que exigem o envio de vários arquivos de uma só vez, pois consegue lidar com o upload simultâneo de diversos arquivos. Considerando todos os aspectos, o Multer simplifica o processo de upload de arquivos, melhorando a capacidade dos aplicativos Node.js de lidar com o material enviado pelo usuário de forma segura e eficaz.

Multer Node.js (Como funciona para desenvolvedores): Figura 1 - Multer Node.js

Recursos do Multer for Node.js

Opções de armazenamento de arquivos

  • O Multer tem a capacidade de armazenar arquivos enviados diretamente no disco. O mecanismo de armazenamento em disco permite que você forneça o nome do arquivo e o diretório de destino. Isso é especialmente útil para programas que exigem que os arquivos sejam salvos para uso futuro.
  • Armazenamento em memória: O Multer tem a capacidade de armazenar arquivos na memória como objetos de buffer para uso momentâneo. Isso é útil em situações em que os arquivos não precisam ser armazenados em disco e podem ser processados ​​imediatamente.

Limites de tamanho de arquivo

As limitações de tamanho que o Multer permite definir para os arquivos enviados podem ajudar a proteger o desempenho do servidor e a gerenciar os recursos de armazenamento de forma eficiente, evitando o envio de arquivos muito grandes. Você pode usar a opção de limitações para fazer isso.

Filtragem de arquivos

O Multer possui uma opção fileFilter que permite gerenciar quais arquivos serão aceitos. Esta função pode rejeitar arquivos que não atendam aos requisitos e também pode verificar o tipo MIME do arquivo e outros atributos. Isso garante que apenas tipos específicos de arquivos — como documentos e imagens — sejam submetidos.

Gerenciando vários arquivos

O Multer consegue gerenciar o envio simultâneo de vários arquivos. É possível configurar rotas para aceitar múltiplos campos contendo arquivos ou conjuntos de arquivos. Isso é útil para formulários em que os usuários precisam enviar vários arquivos de uma só vez, como documentos comprobatórios e imagens de perfil.

Motores de armazenamento personalizáveis

O Multer permite que você projete novos mecanismos de armazenamento, além das soluções de armazenamento em disco e memória integradas. Para obter a máxima flexibilidade, você pode criar sua própria lógica para gerenciar o envio de arquivos, incluindo onde e como os arquivos são salvos.

Fácil integração com o Express

O Multer foi desenvolvido para se integrar facilmente com o Express.js. É simples adicionar a funcionalidade de upload de arquivos às suas aplicações web, utilizando-a como middleware nas suas rotas do Express.

Processamento automático de dados multipartes

Ao analisar automaticamente multipart/form-data, o Multer simplifica o processo de gerenciamento de uploads de arquivos no seu código do lado do servidor, disponibilizando os arquivos enviados e os dados do formulário no objeto req.

Envio de um ou vários arquivos

O Multer oferece diversas maneiras (individual, em matriz e por campos) de gerenciar o upload de um ou mais arquivos. O método single processa um arquivo por solicitação, o método array suporta vários arquivos com o mesmo nome de campo e o método fields pode processar inúmeros arquivos com nomes de campo diferentes.

Criar e configurar o Multer Node.js JS

Os passos abaixo podem ser usados ​​para construir e configurar o Multer em uma aplicação Node.js :

Instalar dependências

A instalação do Multer e do Express é o primeiro passo. O npm pode ser usado para isso:

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

Configurar Multer

Configure o Multer para lidar com uploads de arquivos no seu arquivo .js. Aqui está uma ilustração detalhada:

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 (Como funciona para desenvolvedores): Figura 2 - Aplicativo MulterNode.js usando Multer para fazer upload de arquivos

Configure o sistema de armazenamento

  • destino: Indica a pasta na qual os arquivos enviados serão armazenados.
  • filename: Mantém a extensão original do arquivo, criando um nome de arquivo exclusivo para cada arquivo enviado, com base no carimbo de data/hora e em um número aleatório.
  • Filtro de Arquivos: Uma opção para verificar o tipo de arquivo dos arquivos que são enviados. Neste exemplo, são permitidos apenas arquivos de imagem com as extensões jpeg, jpg, png ou gif.

Inicializar Multer:

  • Armazenamento: Descreve a configuração do armazenamento.
  • limits: Define o tamanho máximo de arquivo permitido (5 MB neste exemplo).
  • fileFilter: Utiliza a função de filtro de arquivos.

Primeiros passos com o IronPDF

Ao utilizar o IronPDF para criar documentos PDF e o Multer para gerenciar o envio de arquivos, cria-se uma solução poderosa para administrar conteúdo gerado pelo usuário e transformá-lo em PDFs de alta qualidade. Abaixo, você encontrará uma explicação de como instalar e combinar essas duas bibliotecas em uma aplicação Node.js

O que é o IronPDF?

IronPDF é um conjunto de bibliotecas de aplicativos projetadas para facilitar a criação, edição e gerenciamento de arquivos PDF. Com este aplicativo, os desenvolvedores podem extrair texto e imagens de documentos HTML, adicionar cabeçalhos e marcas d'água, mesclar diversas páginas de PDF e realizar uma variedade de outras atividades. A documentação completa e a API intuitiva do IronPDF facilitam a geração automática de documentos PDF de alta qualidade por desenvolvedores. O IronPDF inclui todos os recursos e funcionalidades necessários para melhorar os fluxos de trabalho de documentos e oferecer experiências de usuário de primeira linha em diversos cenários, como a criação de documentação, relatórios e faturas.

Multer Node.js (Como funciona para desenvolvedores): Figura 3 - IronPDF for Node.js: A biblioteca PDF for Node.js

Funcionalidades do IronPDF

Um método rápido e simples para lidar com qualquer tipo de texto HTML, incluindo CSS e JavaScript, é convertê-lo para PDF.

Fusão de arquivos PDF: Para facilitar o gerenciamento de documentos, combine vários documentos PDF em um único arquivo PDF.

Extração de texto e imagem: Extraia o texto e as imagens de arquivos PDF para utilizá-los em processamento ou análise de dados adicionais.

Marcas d'água: Por motivos de segurança ou de identidade visual, você pode adicionar marcas d'água de texto ou imagem às páginas de PDFs.

Incluir cabeçalho e rodapé: Os cabeçalhos e rodapés dos documentos PDF permitem incluir uma mensagem personalizada ou números de página.

Instale o IronPDF

Utilize o gerenciador de pacotes do Node para instalar os pacotes Node.js necessários para habilitar a funcionalidade do IronPDF .

npm install @ironsoftware/ironpdf
npm install @ironsoftware/ironpdf
SHELL

Integre o Multer Node.js com o IronPDF

Modifique app.js para configurar o IronPDF para criar PDFs e o Multer para lidar com o envio de arquivos.

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

Integramos o Multer e o IronPDF no código Node.js fornecido para construir um sistema confiável para gerenciar uploads de arquivos e gerar documentos PDF. Configuramos o Multer com uma configuração de armazenamento em disco para lidar com uploads de arquivos multipart/form-data usando o framework Express, atribuindo a cada arquivo enviado um nome de arquivo e um diretório de destino exclusivos. O Multer salva os arquivos enviados pelos usuários através da rota /upload-single, e o servidor examina o conteúdo desses arquivos.

Multer Node.js (Como funciona para desenvolvedores): Figura 4 - Upload de arquivos usando o Multer, adição do arquivo carregado (imagem .jpg) ao conteúdo HTML e conversão para PDF usando o IronPDF

Em seguida, esse conteúdo é integrado a um modelo HTML básico. Este HTML é inserido no IronPDF, que cria um arquivo PDF armazenado no diretório de uploads. Por fim, o servidor fornece um link para baixar o PDF gerado. Essa integração demonstra a eficácia com que o Multer lida com uploads de arquivos, e o IronPDF converte esses uploads em PDFs de alta qualidade para proporcionar um gerenciamento de arquivos e criação de documentos simplificados em um aplicativo Node.js

Multer Node.js (Como funciona para desenvolvedores): Figura 5 - PDF de saída gerado usando IronPDF

Conclusão

Em resumo, uma solução completa para organizar conteúdo gerado pelo usuário e transformá-lo em trabalhos acadêmicos de alta qualidade é fornecida pela integração do Multer para upload de arquivos com o IronPDF para geração de PDFs em uma aplicação Node.js Com funcionalidades como limitações de tamanho, filtragem de arquivos e configuração de armazenamento de arquivos, o Multer facilita o gerenciamento de uploads de arquivos. Por outro lado, o IronPDF oferece opções de personalização e suporte para diversos elementos de estilo, possibilitando a conversão de informações HTML em documentos PDF de alta qualidade.

Essas duas bibliotecas podem ser combinadas para criar aplicativos flexíveis que permitem aos usuários enviar arquivos e tê-los transformados automaticamente em documentos PDF visualmente atraentes. Essa integração aumenta a eficiência das operações de geração de documentos e melhora a experiência do usuário, simplificando o processo de geração de faturas, certificados, relatórios e muito mais.

Oferecer soluções de software premium e ricas em recursos para clientes e usuários finais tornou-se mais fácil com a integração do IronPDF em sua pilha de desenvolvimento de aplicativos corporativos. Além disso, essa base sólida facilitará projetos, sistemas de back-end e aprimoramento de processos.

IronPDF .

Saiba mais sobre outros produtos da Iron Software . Graças à sua rica documentação , à ativa comunidade de desenvolvedores online e às frequentes revisões, essas tecnologias são uma ótima opção para projetos de desenvolvimento de software contemporâneos.

Darrius Serrant
Engenheiro de Software Full Stack (WebOps)

Darrius Serrant é bacharel em Ciência da Computação pela Universidade de Miami e trabalha como Engenheiro de Marketing WebOps Full Stack na Iron Software. Atraído por programação desde jovem, ele via a computação como algo misterioso e acessível ao mesmo tempo, tornando-a o meio ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim