節點幫助

Multer Node.js(開發人員如何使用)

介紹

在當前的網路開發環境中,管理文件上傳和生成 PDF 文件是許多應用的標準需求。 總結在 Node.js 環境中IronPDFMulter的功能,可以有效地處理這些需求,形成強大的解決方案。

Multer 是一個用於 Node.js 的中介軟體,可以更輕鬆地處理多部分/表單資料,這主要用於文件上傳。 由於其高度靈活性,開發人員可以指定文件大小限制、儲存選項和文件過濾,以確保安全且有效的文件上傳。 Multer 是一個頂尖選擇,開發者希望輕鬆將文件上傳功能集成到他們的應用程式中,因為它與 Express.js 的集成非常簡單。

相反,IronPDF 是一個強大的 PDF 創建函式庫,使程式設計師能夠使用 HTML 文本來創建 PDF 文件。 擁有多種功能,包括支持 JavaScript 執行、CSS 樣式及字體和圖片嵌入,這是將動態網頁信息轉換為專業外觀 PDF 的完美工具。

我們將通過講解如何設置和使用IronPDF來創建 PDF 文檔,以及使用Multer來管理 Node.js 應用程式中的文件上傳,來展示這兩個強大工具之間的順暢合作。

什麼是 Multer Node.js?

Multer 是一個 Node.js 中介軟體,可以讓處理 multipart/form-data——主要用於檔案上傳——變得更簡單。 它提供了一種可靠的方法來處理 web 應用程式中的文件上傳功能,並輕鬆介接 Express.js。 為了確保只有授權的檔案類型被上傳,Multer讓開發人員能夠指定檔案大小限制、配置儲存選項和應用檔案過濾。

它通過支持磁碟和記憶體存儲,為伺服器在管理文件時提供了靈活性。 Multer 也非常適合需要一次提交多個檔案的表單,因為它可以處理多個檔案的上傳。 總的來說,Multer 簡化了文件上傳過程,提高了 Node.js 應用程序安全且有效地處理用戶上傳資料的能力。

Multer Node.js(對開發者的運作方式):圖 1 - Multer Node.js

Multer 的 Node.js 功能

檔案儲存選項

  • Multer 能夠將上傳的文件直接存儲到磁碟。 磁碟儲存引擎允許您提供檔案名和目標目錄。 這對於需要將檔案保存以供日後使用的程式特別有用。
  • 記憶體儲存:Multer 能夠將文件暫時儲存在記憶體中作為緩衝對象使用。 這在不需要將文件保留在磁盤上並能立即進行處理的情況下非常有幫助。

檔案大小限制

Multer 讓您設定上傳文件的大小限制,可以協助保障伺服器效能,並透過防止上傳過大文件來有效管理儲存資源。 您可以使用限制選項來完成此操作。

檔案篩選

Multer 有一個 fileFilter 選項,可以讓您管理哪些文件被接受。 不符合要求的檔案可能會被此功能拒絕,該功能還可以驗證檔案的 MIME 類型和其他屬性。 這可確保僅提交特定類型的文件,例如文件和圖像。

處理多個文件

Multer 可以同時管理多個上傳的文件。 可以設置路由以接受包含文件或文件數組的多個字段。 這對於需要一次上傳多個檔案的表單非常有幫助,例如支持檔案和個人資料圖片。

可自定義的存儲引擎

Multer 讓您可以設計新的存儲引擎,除了內建的磁碟和記憶體存儲解決方案外。 為了獲得最佳的靈活性,您可以建立自己的邏輯來管理文件上傳,包括保存文件的位置和方式。

與 Express 輕鬆整合

Multer是為了能夠輕鬆整合Express.js而設計的。 使用 middleware 在 Express 路由中,可以輕鬆地將檔案上傳功能添加到您的網絡應用程式中。

自動處理多部分數據

Multer 透過自動解析 multipart/form-data,簡化了伺服器端程式碼中處理文件上傳的過程,方法是將上傳的文件和表單數據提供在 req 物件上。

單個和多個文件上傳

Multer 提供多種方式(single、array 和 fields)來管理單個或多個文件的上傳。 單一方法處理每個請求的一個文件,數組方法支援具有相同欄位名稱的多個文件,而欄位方法可以處理具有不同欄位名稱的大量文件。

創建和配置 Multer Node.js JS

以下步驟可用於在 Node.js 應用程式中構建和設置Multer

安裝相依性

安裝 Multer 和 Express 是第一步。可以使用 npm 來完成:

npm install multer
npm install express

配置 Multer

在您的.js文件中配置Multer來處理文件上傳。以下是一個詳細的示例:

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}`);
});
js
JAVASCRIPT

Multer Node.js(對開發者的運作方式):圖 2 - 使用 Multer 上傳文件的 MulterNode.js 應用程式

配置存儲系統

destination:表示上傳的檔案將儲存的資料夾。

filename:在建立每個上傳文件的唯一文件名稱時,保留原始文件的擴展名,並基於時間戳和隨機數。

文件過濾器:一個用於驗證上傳文件類型的選項。 在此範例中,只允許具有 jpeg、jpg、png 或 gif 擴展名的圖像檔案。

初始化 Multer:

  • 儲存:描述儲存設置。
  • 限制:定義允許的最大文件大小(此例中為 5 MB)。
  • fileFilter:使用檔案過濾器的功能。

入門 IronPDF

當使用IronPDF製作 PDF 文件並使用Multer處理文件上傳時,便創造出一個強大的解決方案,用於管理用戶生成的內容並將其轉換為精美的 PDF。 以下是如何在 Node.js 應用中安裝和結合這兩個函式庫的說明。

什麼是 IronPDF?

IronPDF 是一套應用程式庫,旨在促進 PDF 檔案的創建、編輯和管理。 使用此應用程式,開發人員可以從 HTML 文件中提取文字和圖片,新增標題和浮水印,合併多個 PDF 頁面,以及執行各種其他活動。 IronPDF 的完整文件和用戶友好的 API 使開發人員能夠輕鬆自動生成高品質的 PDF 文件。 IronPDF 包含了所有的功能和特性,能改善文件工作流程,并在多種情境下提供一流的用戶體驗,比如創建文檔、報告和發票。

Multer Node.js (它如何為開發者工作): 圖3 - IronPDF for Node.js: Node.js PDF庫

IronPDF 的功能

將任何類型的 HTML 文本(包括 CSS 和 JavaScript)轉換為 PDF,是一種快速而簡單的方法。

PDF 文件合併:為了讓文件管理工作更加簡便,將多個 PDF 文檔合併成一個單一的 PDF 文件。

文字和圖片提取:從 PDF 檔案中提取文字和圖片,以便用於額外的數據處理或分析。

水印:出於安全或品牌用途,您可以在 PDF 頁面上添加文字或圖片水印。

包括頁首和頁尾:PDF 文件的頁首和頁尾允許您包括自訂訊息或頁碼。

安裝 IronPDF

使用 node 軟體包管理器安裝所需的 Node.js 軟體包,以啟用 IronPDF 功能。

npm install @ironsoftware/ironpdf

將 Multer Node.js 與 IronPDF 整合

修改 app.js 來設置 IronPDF 用於創建 PDF,並設置 Multer 用於處理文件上傳。

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.filename;
    const pdfPath = path.join(__dirname, 'uploads', filename);
    res.download(pdfPath);
  });
// Start the server
const PORT = process.env.PORT 
 3000;
app.listen(PORT, () => {
  console.log(`Server is running on port ${PORT}`);
});
js
JAVASCRIPT

我們在提供的 Node.js 代碼中集成了 Multer 和 IronPDF,以構建一個可靠的系統來管理文件上傳和生成 PDF 文件。 我們使用磁碟儲存配置設定 Multer,以使用 Express 框架處理 multipart/form-data 檔案上傳,為每個上傳的檔案提供唯一的檔名和目標目錄。 Multer 透過 /upload-single 路由保存用戶上傳的文件,服務器會檢查這些文件的內容。

Multer Node.js(它如何為開發者工作):圖 4 - 使用 Multer 上傳文件,然後將上傳的文件(.jpg 圖像)添加到 HTML 內容中,並使用 IronPDF 將其轉換為 PDF

之後,此內容將整合到基本的HTML模板中。 這個 HTML 被輸入到 IronPDF 中,創建了一個 PDF 文件,該文件儲存在上傳目錄中。 最後,伺服器會提供一個連結以供下載生成的 PDF。 此整合演示了Multer如何有效處理文件上傳,並且IronPDF可以將這些上傳內容轉換成高質量的PDF,以提供Node.js應用程式內流暢的文件管理和文件創建。

Multer Node.js(它為開發人員的工作方式):圖5 - 使用 IronPDF 生成的輸出 PDF

結論

總之,在 Node.js 應用程式中,結合使用 Multer 進行檔案上傳與 IronPDF 生成 PDF,可提供一個完整的解決方案來整理用戶生成的內容並將其轉化為完善的文件。 憑藉大小限制、文件過濾和文件存儲配置等功能,Multer使管理文件上傳變得更加容易。 另一方面,IronPDF 提供了自訂選項和對各種樣式元素的支援,使得將 HTML 資訊轉換為高品質 PDF 文件成為可能。

這兩個庫可以結合使用,創建靈活的應用程式,讓使用者提交文件並自動將其轉換為美觀的 PDF 文件。 此整合提高了文件生成操作的效率,並透過簡化生成發票、證書、報告等過程來改善用戶體驗。

透過將IronPDF整合到您的企業應用程式開發堆疊中,為客戶和最終用戶提供功能豐富的高級軟體解決方案變得更容易。 此外,這一強大的基礎將促進項目、後端系統和流程改進。

IronPDF

了解更多其他Iron Software 產品。 由於其豐富的文檔、活躍的在線開發者社群以及頻繁的更新,這些技術是現代軟體開發項目的極佳選擇。

Darrius Serrant
全端軟體工程師(WebOps)

Darrius Serrant 擁有邁阿密大學的計算機科學學士學位,目前擔任 Iron Software 的全端 WebOps 行銷工程師。自幼對編程產生興趣,他認為計算機既神秘又易於接觸,使其成為創造力和解決問題的完美媒介。

在 Iron Software,Darrius 享受創造新事物並簡化複雜概念使其更易理解的過程。作為我們的其中一位常駐開發人員,他也自願教導學生,將他的專業知識傳授給下一代。

對 Darrius 來說,他的工作之所以令人滿足,是因為它受到重視並且產生了真正的影響。

< 上一頁
Node.js Fetch(開發者如何使用)
下一個 >
uuid NPM (對開發者而言如何運作)

準備開始了嗎? 版本: 2025.5 剛剛發布

查看許可證 >