0

0

前端文件上传与Express/fs后端本地存储教程

霞舞

霞舞

发布时间:2025-09-04 22:51:18

|

382人浏览过

|

来源于php中文网

原创

前端文件上传与express/fs后端本地存储教程

本文将详细介绍如何使用前端

元素上传文件,并通过 Express 框架和 Node.js 的 fs 模块将其保存到服务器本地文件夹中。文章将涵盖前端表单配置、后端 body 解析中间件的选择与配置,以及使用 Multer 中间件处理文件上传的具体步骤,并提供示例代码和注意事项,帮助开发者快速实现文件上传功能。

前端:配置表单以支持文件上传

要使浏览器能够上传文件,必须在 HTML 表单中添加 enctype 属性,并将其设置为 multipart/form-data。 默认情况下,enctype 属性为 application/x-www-form-urlencoded,它不适合传输文件。


  
  

注意: name 属性的值 (image 在本例中) 在后端用于识别上传的文件。

后端:使用 Multer 处理文件上传

Express 默认的 body-parser 中间件不处理 multipart/form-data 类型的请求。 因此,我们需要使用专门为此目的设计的中间件,例如 Multer

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

  1. 安装 Multer:

    npm install multer
  2. 导入并配置 Multer:

    ERMEB云盘发卡系统源码
    ERMEB云盘发卡系统源码

    ERMEB云盘发卡系统官方正版系统,发卡系统操作简单、方便、易懂。 系统微信小程序前端采用nuiapp后端采用think PHP6PC前端采用vue开发 使用场景:文件上传储存,适合个人/个体/中小企业使用。本系统配合微信小程序端进行使用,文件下载以及发卡商品卡密领取都需要进入小程序内获取下载码以及卡密领取,小程序内可设置积分充值以及任务获取积分,支持微信激励广告领取文件下载码以及卡密商品,可实现

    下载
    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) // 使用原始文件名
      }
    })
    
    const upload = multer({ storage: storage });

    multer.diskStorage() 允许您完全控制磁盘上文件的存储。 destination 选项确定文件应存储在哪个文件夹中。 如果未提供 destination,则操作系统将使用默认的临时目录。 filename 用于确定文件夹中的文件名。 如果未提供 filename,则 Multer 将生成一个不带扩展名的随机文件名。

  3. 路由中使用 Multer 中间件:

    app.post('/products', upload.single('image'), (req, res) => {
      console.log(req.file); // 上传的文件信息
      console.log(req.body); // 其他表单数据
    
      // 文件已保存到 ./uploads/ 目录,可以使用 fs 模块进一步处理
      res.render('products', { title: 'bib' });
    });

    upload.single('image') 是一个中间件,它只处理一个名为 image 的文件字段。 上传的文件信息存储在 req.file 对象中。 如果有多个文件字段,可以使用 upload.array('images', maxCount) 或 upload.fields([{ name: 'image1', maxCount: 1 }, { name: 'image2', maxCount: 3 }])。

完整示例

app.js:

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) // 使用原始文件名
  }
})

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

app.set('view engine', 'ejs'); // 设置 ejs 模板引擎

app.post('/products', upload.single('image'), (req, res) => {
  console.log(req.file); // 上传的文件信息
  console.log(req.body); // 其他表单数据

  // 文件已保存到 ./uploads/ 目录,可以使用 fs 模块进一步处理
  res.render('products', { title: 'bib' });
});

app.get('/products', (req, res) => {
    res.render('products', { title: 'bib' })
})

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

products.ejs:




  <%= title %>


  

Upload Image

注意事项

  • 确保 ./uploads/ 目录存在,或者在代码中创建它。
  • 可以根据需要自定义 Multer 的配置,例如限制文件大小、文件类型等。
  • 上传的文件存储在服务器上,需要考虑安全性问题,例如防止恶意文件上传。
  • 在生产环境中,建议使用云存储服务(如 AWS S3、阿里云 OSS)来存储上传的文件。

总结

本文详细介绍了如何使用前端表单、Express 框架和 Multer 中间件实现文件上传功能。 通过正确配置表单和使用合适的 body 解析中间件,可以轻松地将文件从前端上传到后端,并将其保存到本地文件夹中。 记住要考虑安全性问题,并根据需要自定义 Multer 的配置。

相关专题

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

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

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号