0

0

前端文件上传至本地服务器:使用 Express 和 Multer

DDD

DDD

发布时间:2025-09-04 22:53:00

|

705人浏览过

|

来源于php中文网

原创

前端文件上传至本地服务器:使用 express 和 multer

本文档旨在指导开发者如何使用 Express 框架和 Multer 中间件,实现前端文件上传并保存到本地服务器的功能。我们将详细介绍前端 HTML 表单的配置,以及后端 Express 路由的处理,包括 Multer 的配置和使用,以及文件保存的实现。通过本教程,你将能够轻松地构建一个支持文件上传的 Web 应用。

前端 HTML 表单配置

首先,我们需要创建一个 HTML 表单,允许用户选择文件并上传。关键在于设置 enctype 属性为 multipart/form-data,这告诉浏览器使用 MIME 协议对表单数据进行编码,以便正确地上传文件。

  • action: 指定表单数据提交的 URL。
  • method: 设置为 POST,因为我们需要上传文件。
  • enctype="multipart/form-data": 确保浏览器以正确的方式编码表单数据,以便上传文件。
  • : 文件选择输入框,name 属性设置为 image,这个名称将在后端用于访问上传的文件。

后端 Express 配置和 Multer 中间件

在后端,我们需要使用 Express 框架处理上传请求。Multer 是一个 Node.js 中间件,用于处理 multipart/form-data 类型的表单数据,它专门用于处理文件上传。

  1. 安装 Multer:

    立即学习前端免费学习笔记(深入)”;

    npm install multer --save
  2. 引入 Multer 并配置:

    三顾购物系统服装静态生成版
    三顾购物系统服装静态生成版

    三顾购物系统分为服装版、鲜花版、化妆品版、时尚商务版等多个版本,本系统为服装版,并且支持静态生成,采用三顾购物平台,具备了所有购物网站的功能,应用于服装行业。 此为生成静态版本,原动态版本地址: http://down.chinaz.com/soft/30332.htm 三顾购物系统使用说明: 解压后将3gushop文件夹下的所有文件上传到支持ASPJPEG和ASPUpload组件的ASP空间

    下载
    const express = require('express');
    const multer  = require('multer');
    const app = express();
    
    // 配置 Multer 存储
    const storage = multer.diskStorage({
      destination: function (req, file, cb) {
        cb(null, './uploads/') // 指定文件存储目录
      },
      filename: function (req, file, cb) {
        cb(null, file.originalname) // 使用原始文件名
        // 或者使用 Date.now() + '-' + file.originalname 生成唯一文件名
      }
    })
    
    const upload = multer({ storage: storage });
    • multer.diskStorage(): 配置文件的存储方式。
      • destination: 指定文件存储的目录。
      • filename: 指定保存的文件名。可以使用原始文件名,也可以生成唯一的文件名。
    • multer({ storage: storage }): 创建 Multer 实例,并传入配置。
  3. 处理上传请求:

    app.post('/products', upload.single('image'), (req, res) => {
      // req.file 是 `image` 文件
      // req.body 将具有文本域数据,如果存在的话
      console.log(req.file); // 上传文件信息
      console.log(req.body); // 其他表单数据
    
      res.send('File uploaded successfully!');
    });
    • upload.single('image'): 中间件,用于处理单个文件的上传,image 是前端 HTML 表单中 input 标签的 name 属性。
    • req.file: 包含上传文件的信息,例如文件名、文件大小、文件类型等。
    • req.body: 包含表单中的其他文本数据。

完整示例代码

const express = require('express');
const multer  = require('multer');
const app = express();

// 配置 Multer 存储
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './uploads/') // 指定文件存储目录
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname) // 使用原始文件名
    // 或者使用 Date.now() + '-' + file.originalname 生成唯一文件名
  }
})

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

app.use(express.static('public')); // 静态文件服务,用于访问上传的文件

app.post('/products', upload.single('image'), (req, res) => {
  console.log(req.file);
  console.log(req.body);
  res.send('File uploaded successfully!');
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

注意事项:

  • 确保 uploads 目录存在,或者在代码中创建该目录。
  • Multer 还有其他配置选项,例如限制文件大小、文件类型等,可以根据实际需求进行配置。
  • 错误处理:在实际应用中,需要添加错误处理机制,例如处理文件上传失败的情况。

总结:

通过本教程,你学习了如何使用 Express 和 Multer 实现前端文件上传并保存到本地服务器。 关键在于正确配置 HTML 表单的 enctype 属性,以及使用 Multer 中间件处理上传请求。 掌握这些知识后,你可以轻松地构建支持文件上传的 Web 应用。

相关专题

更多
什么是中间件
什么是中间件

中间件是一种软件组件,充当不兼容组件之间的桥梁,提供额外服务,例如集成异构系统、提供常用服务、提高应用程序性能,以及简化应用程序开发。想了解更多中间件的相关内容,可以阅读本专题下面的文章。

178

2024.05.11

Golang 中间件开发与微服务架构
Golang 中间件开发与微服务架构

本专题系统讲解 Golang 在微服务架构中的中间件开发,包括日志处理、限流与熔断、认证与授权、服务监控、API 网关设计等常见中间件功能的实现。通过实战项目,帮助开发者理解如何使用 Go 编写高效、可扩展的中间件组件,并在微服务环境中进行灵活部署与管理。

212

2025.12.18

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

615

2023.06.14

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

653

2023.06.21

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

470

2023.07.31

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

245

2023.08.01

html是什么
html是什么

HTML是一种标准标记语言,用于创建和呈现网页的结构和内容,是互联网发展的基石,为网页开发提供了丰富的功能和灵活性。本专题为大家提供html相关的各种文章、以及下载和课程。

2893

2023.08.11

html字体大小怎么设置
html字体大小怎么设置

在网页设计中,字体大小的选择是至关重要的。合理的字体大小不仅可以提升网页的可读性,还能够影响用户对网页整体布局的感知。php中文网将介绍一些常用的方法和技巧,帮助您在HTML中设置合适的字体大小。

505

2023.08.11

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.9万人学习

AngularJS教程
AngularJS教程

共24课时 | 2.7万人学习

CSS教程
CSS教程

共754课时 | 20.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号