使用 Express.js 构建一个简单的 Node.js 应用程序来下载 PDF

使用 Express.js 构建一个简单的 Node.js 应用程序来下载 PDF

介绍

在本教程中,我们将逐步介绍使用 Express.js 构建 Node.js 应用程序的过程,该应用程序允许用户下载 PDF 文件。对于从文档管理系统到教育平台的各种应用程序来说,这都是一个有用的功能。

前提

在我们开始之前,请确保您具备以下先决条件:

  • 安装 Node.js(https://nodejs.org/)

  • 安装 Npm (https://www.npmjs.com/)

  • 设置项目目录并使用 初始化 Node.js 项目npm init。

第 1 步:项目设置

为您的项目创建一个新目录 (app.js),并使用以下命令初始化 Node.js 项目:

npm init

第2步:安装依赖项

为您的项目安装必要的依赖项。您可以通过运行以下命令来执行此操作:

npm i express

第 3 步:设置 Express 应用程序

创建 Express 应用程序并设置基本 Express 服务器。这是此步骤的代码:

const express = require('express');
const app = express();
const port = 3000;
const fs = require('fs');

步骤 4:创建 PDF 下载路径

创建处理 PDF 文件下载的 Express 路由。这是代码:

app.get('/download-pdf', (req, res) => {
  const filePath = `./pdfs/java.pdf`;
});

确保您创建了一个名为“pdfs添加您自己的 pdf 文件”的文件夹,我的文件名为java.pdf

步骤5:检查PDF文件是否存在

使用该fs.existsSync方法检查指定目录中是否存在PDF文件。如果文件不存在,我们将处理文件未找到错误。

if (!fs.existsSync(filePath)) {
    const notFoundError = new CustomError(404, 'PDF file not found');
    return next(notFoundError);
}

第 6 步:发送 PDF 文件以供下载

如果文件存在,我们可以使用res.download发送PDF文件的方法进行下载。这是此步骤的代码:

res.download(filePath, `java.pdf`, (err) => {
    if (err) {
      const downloadError = new CustomError(500, 'Error: Unable to download the PDF file');
      return next(downloadError);
    }
  });
});

第7步:错误处理

实施错误处理以捕获并响应各种错误,例如找不到文件或下载错误。以下是处理 Express 应用中的错误的方法:

app.use((err, req, res, next) => {
    if (err instanceof customError) {
      res.status(err.statusCode).json({ error: err.message });
    } else {
      // Handle other errors
      res.status(500).json({ error: 'Internal Server Error' });
    }
  });

第 8 步:运行应用程序

使用以下代码启动 Node.js 应用程序:

app.listen(port, () => {
    console.log(`App listening on port ${port}`);
  });

现在你应该拥有这个——

const express = require('express');
const app = express();
const port = 3000;
const fs = require('fs');

// Replace this with your actual PDF directory path
const pdfDirectory = './pdfs';

// Error handling class
class CustomError extends Error {
  constructor(statusCode, message) {
    super();
    this.statusCode = statusCode;
    this.message = message;
  }
}

// Middleware for error handling
app.use((err, req, res, next) => {
  if (err instanceof CustomError) {
    res.status(err.statusCode).json({ error: err.message });
  } else {
    res.status(500).json({ error: 'Internal Server Error' });
  }
});

app.get('/download-pdf', (req, res) => {
  const filePath = `${pdfDirectory}/java.pdf`;

  if (!fs.existsSync(filePath)) {
    const notFoundError = new CustomError(404, 'PDF file not found');
    return next(notFoundError);
  }

  res.download(filePath, `java.pdf`, (err) => {
    if (err) {
      const downloadError = new CustomError(500, 'Error: Unable to download the PDF file');
      return next(downloadError);
    }
  });
});

app.listen(port, () => {
  console.log(`App listening on port ${port}`);
});

现在您测试或运行您的应用程序node app.js,然后使用您选择的任何浏览器 {Chrome} 访问此路由http://localhost:3000/download-pdf

就这样🙏🙏🙏


文章来源地址https://www.toymoban.com/diary/web/384.html

到此这篇关于使用 Express.js 构建一个简单的 Node.js 应用程序来下载 PDF的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/web/384.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
上一篇 2023年10月12日 15:07
SQL 中的 ACID 和事务
下一篇 2023年10月13日 01:52

相关文章

  • 【Node.js】Express-Generator:快速生成Express应用程序的利器

    在Node.js世界中,Express是一个广泛使用的、强大的Web应用程序框架。它为开发者提供了一系列的工具和选项,使得创建高效且可扩展的Web应用程序变得轻而易举。然而,对于初学者来说,配置和初始化Express应用程序可能会有些困难。为了解决这个问题,Express团队推出了一款名

    2024年02月10日
    浏览(52)
  • 使用 Node.js 和 Socket.io 构建实时聊天应用程序

    主要是通过简易聊天室熟练掌握 Socket.io 相关方法和运行的过程。 Socket.io 在进行实现简易实时聊天室之前,我们先梳理一下我们需要的功能和流程。 所需功能: 1、告知用户已经连接到聊天室 2、自己发送时,页面展示对应的消息展示,而对方看的到信息是谁发送了什么 3、

    2024年02月13日
    浏览(53)
  • Nest的基本概念,以及如何使用Nest CLI来构建一个简单的Web应用程序

    Nest是一个用于构建高效、可扩展的Node.js服务器端应用程序的框架。它是基于Express.js构建的,并且提供了多种新特性和抽象层,可以让开发者更加轻松地构建复杂的应用程序。 本文将介绍Nest的基本概念,以及如何使用Nest CLI来构建一个简单的Web应用程序。 模块 在Nest中,模块

    2024年02月02日
    浏览(110)
  • Node.js 中的事件驱动编程:构建强大应用程序的利器

    引言: 在当今高度并发的网络环境下,构建高效、响应迅速的应用程序是开发人员的一项重要任务。Node.js,作为一种基于事件驱动编程模型的 JavaScript 运行环境,为开发人员提供了一个强大的工具。本文将介绍 Node.js 中的事件模型以及如何使用事件驱动编程模式构建强大的

    2024年02月10日
    浏览(47)
  • Node.js npm V8 React Express的运行配合关系:构建JavaScript应用的基石

    目录 Node.js 和 V8 引擎 Node.js 和 npm LTS(Long Term Support) React Node.js的作用 Express Node.js 和 V8 引擎 Node.js 使用 Google 的 V8 JavaScript 引擎 来执行 JavaScript 代码。V8 是一个高性能的 JavaScript 和 WebAssembly 引擎,用于在 Google Chrome 浏览器和 Node.js 中运行 JavaScript。 V8 引擎的更新 通常包括

    2024年03月12日
    浏览(59)
  • Node.js基本概念、特点、用途和常用模块,以及Express框架开发一个web应用

    目录 一、Node.js的基本概念和特点 二、Node.js的用途 三、Node.js的常用模块 四、使用Node.js进行Web开发 1. 安装Node.js 2. PyCharm配置Node.js 3. 使用http库编写一个web服务 4. 使用Express框架构建Web应用程序 5. 调试代码 6. 发布应用程序 参考文章  Node.js系列文章推荐阅读: JavaScript匿名函

    2024年02月07日
    浏览(86)
  • Vue + JS + tauri 开发一个简单的PC端桌面应用程序

    Tauri 1 是一款应用构建工具包,让您能够为使用 Web 技术的所有主流桌面操作系统构建软件。tauri 框架与 electron 非常相似。 tauri electron 体积 10MB 100MB 打包速度 2s 17s Tauri 由一个可搭配任何前端来构建桌面应用的框架和 Rust 核心构成。 创建窗口并向其提供原生功能支持的 Rust 二

    2024年01月17日
    浏览(56)
  • 如何使用Vue.js构建桌面应用程序

    Vue.js是一个流行的JavaScript框架,可以用于构建Web应用程序。但是,Vue.js也可以用于构建桌面应用程序。本文将介绍如何使用Vue.js构建桌面应用程序,包括以下步骤: 1. 选择一个Vue.js框架:选择一个适合你的Vue.js框架。我们推荐使用Electron,因为它是最流行的桌面应用程序框架

    2024年02月15日
    浏览(46)
  • 前端Vue Node.js + Express + MongoDB 构建的后端服务API接口

    构建一个使用 Vue.js 作为前端, Node.js + Express + MongoDB 作为后端服务的全栈应用涉及到多个步骤。这里简要概述整个过程,并提供一些基本的代码示例来帮助你开始。 安装 MongoDB: 根据你的操作系统从 MongoDB 官网 下载并安装 MongoDB。 启动 MongoDB 服务: 安装完成后,根据 MongoDB 的

    2024年04月14日
    浏览(50)
  • 【Bun1.0】使用 Bun.js 构建快速、可靠和安全的 JavaScript 应用程序

    Bun 是一个现代的JavaScript运行环境,如Node, Deno。主要特性如下: 启动速度快。更高的性能。完整的工具(打包器、转码器、包管理)。 https://bun.sh 与传统的 Node.js 不同,Bun.js 提供了一些新的特性和功能,例如: 更快的启动速度、更小的内存占用、更好的异常处理机制等等。

    2024年02月09日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包