返回顶部
首页 > 资讯 > 精选 >node项目中怎么使用express来处理文件的上传
  • 113
分享到

node项目中怎么使用express来处理文件的上传

2023-07-05 18:07:27 113人浏览 安东尼
摘要

这篇文章主要介绍“node项目中怎么使用express来处理文件的上传”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node项目中怎么使用express来处理文件的上传”文章能帮助大家解决问题。上传

这篇文章主要介绍“node项目中怎么使用express来处理文件的上传”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node项目中怎么使用express来处理文件的上传”文章能帮助大家解决问题。

上传单个文件

我们可以使用 express 官方出品的第三方中间件 multer 来处理,先是安装:

npm i multer

然后我先放段比较完整的代码,之后解释:

const express = require('express')const multer = require('multer')const app = express()const upload = multer({ dest: './uploads' })app.post('/upload', upload.single('file'), (req, res) => {  console.log(req.file)  res.end('上传成功')})app.listen(4396, () => {  console.log('服务器开启')})

引入后的 multer 为一个函数,执行它得到 upload 对象,执行时可以传入配置,比如设置 dest (destination 的缩写) 为 './uploads',用于指定上传后的文件的存放位置:  

const upload = multer({ dest: './uploads' })

由于对上传文件的处理并不是普遍需要的,所以对 upload 的使用是直接在匹配上传路径(我们定义为 '/upload')和方法(一般为 POST)的 app.post('/upload', ) 内,处理的是单个文件上传,所以使用 upload.single() 方法,传入的 'file'(自定义,也可以为其它名字) 为上传文件时的 key:

node项目中怎么使用express来处理文件的上传

其执行会返回一个中间件函数,将得到的文件的数据赋值到 req.file,而文本字段的信息则会放在 req.body 中,并调用 next(),这样我们就可以接着注册一个中间件,打印查看文件信息,并向客户端返回请求结果 :

app.post('/upload', upload.single('file'), (req, res) => {  console.log(req.body)  console.log(req.file)  res.end('上传成功')})

发起上传请求后,打印得到的 req.body 如下:

[Object: null prototype] { name: 'jay' }

注意,如果请求的 body 使用 fORM-data 格式携带的数据里没有文件,而仅仅是一些文本字段,则 upload.single('file') 可以换成 upload.any()

打印得到的 req.file 如下:

{  fieldname: 'file',  originalname: '1.png',  encoding: '7bit',  mimetype: 'image/png',  destination: './uploads',  filename: '4c5781db70269d90cc57249e95a28894',  path: 'uploads\\4c5781db70269d90cc57249e95a28894',  size: 904454}

并且文件会存储在 uploads 目录下:

node项目中怎么使用express来处理文件的上传

可以看到,文件名为哈希值,且没有后缀,在 vscode 里无法直接查看图片:

node项目中怎么使用express来处理文件的上传

但图片文件是可用的,使用 ps 是可以直接打开查看的。那如果想让文件存储时的文件名是添加后缀的,要怎么办呢?解决方案是在执行 const upload = multer() 时,传入的配置对象不再设置 dest 的值而改为设置 storage

const storage = multer.diskStorage({  destination(req, file, cb) {    cb(null, './uploads')  },  filename(req, file, cb) {    cb(null, Date.now() + '-' + file.originalname)  }})const upload = multer({ storage })

storage 对象由 multer.diskStorage() 生成,其内部传入对象,该对象有两个方法属性,它们都有 3 个参数,请求对象 req,文件信息 file,和一个回调函数 cb

  • destination 就是配置文件存储路径的,其作用等同于之前直接往 multer() 传入的 { dest: './uploads' },存储路径通过 cb 的第二个参数传入,cb 的第一个参数可以传 Error 对象或直接传 null

  • filename 就可以用来自定义文件名,因为 file.originalname 也就是上传的文件的原来的文件名,其是带有后缀的,所以我们在它前面加个时间戳来作为存储时的文件名。

现在再次发送上传文件请求,存储到 uploads 目录下的文件就有带后缀名了,可以直接在 vscode 打开查看:

node项目中怎么使用express来处理文件的上传

上传多个文件

如果请求一次性上传多个文件,则只需要将 upload.single('file') 替换为 upload.array('files', 3) 即可,传入参数意为上传时文件的 key 为 files(自定义的,也可以是其它名字),并且限制最多上传 3 张图片,得到的文件信息可以在下一个中间件函数的 req.files 获取:

app.post('/upload', upload.array('files', 3), (req, res) => {  console.log(req.files)  res.end('上传成功')})

当我们一次上传多个文件时:

node项目中怎么使用express来处理文件的上传

打印 req.files 得到的就是个数组了:

[  {    fieldname: 'files',    originalname: '1.png',    encoding: '7bit',    mimetype: 'image/png',    destination: './uploads',    filename: '1676958850980-1.png',    path: 'uploads\\1676958850980-1.png',    size: 904454  },  {    fieldname: 'files',    originalname: 'qrcode.png',    encoding: '7bit',    mimetype: 'image/png',    destination: './uploads',    filename: '1676958850986-qrcode.png',    path: 'uploads\\1676958850986-qrcode.png',    size: 1076  }]

将文件部署为静态资源

可以使用内置的 express.static('./uploads') 中间件函数将存储上传文件的 uploads 目录设置为静态资源。然后传给 app.use()

app.use(express.static('./uploads'))

这样我们就可以直接通过浏览器查看上传得到的文件了,比如 uploads 有张图片如下:

node项目中怎么使用express来处理文件的上传

只需要在浏览器输入 localhost:4396/1677031777791-1.png 即可查看。

关于“node项目中怎么使用express来处理文件的上传”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网精选频道,小编每天都会为大家更新不同的知识点。

--结束END--

本文标题: node项目中怎么使用express来处理文件的上传

本文链接: https://lsjlt.com/news/354085.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • node项目中怎么使用express来处理文件的上传
    这篇文章主要介绍“node项目中怎么使用express来处理文件的上传”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“node项目中怎么使用express来处理文件的上传”文章能帮助大家解决问题。上传...
    99+
    2023-07-05
  • node项目中如何使用express来处理文件的上传
    怎么处理文件上传?下面本篇文章给大家介绍一下node项目中如何使用express来处理文件的上传,希望对大家有所帮助!上传单个文件我们可以使用 express 官方出品的第三方中间件 multer 来处理,先是安装:npm i multer...
    99+
    2023-05-14
    node nodejs Express 文件上传
  • 在EasyUI项目中使用FileBox控件实现文件上传处理
    在EasyUI项目中使用FileBox控件实现文件上传处理,可以按照以下步骤进行操作:1. 引入EasyUI的相关文件,包括easy...
    99+
    2023-09-02
    EasyUI
  • 浅析Node中http模块怎么处理文件上传
    怎么使用Node.js的http模块处理文件上传?下面本篇文章就来看看在服务器端要如何处理前端上传的文件,希望对大家有所帮助!查看请求数据如果我们现在向服务器发送的数据如下图所示,里面包含了普通的字段信息 name 以及一个图片文件 fil...
    99+
    2023-05-14
    node HTTP模块
  • node.js怎么使用express-fileupload中间件实现文件上传
    本篇内容介绍了“node.js怎么使用express-fileupload中间件实现文件上传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本...
    99+
    2023-06-17
  • node.js怎么使用express-fileupload实现文件上传
    这篇文章主要讲解了“node.js怎么使用express-fileupload实现文件上传”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“node.js怎么使用express-fileuplo...
    99+
    2023-07-04
  • Node中http模块如何处理文件上传
    本文小编为大家详细介绍“Node中http模块如何处理文件上传”,内容详细,步骤清晰,细节处理妥当,希望这篇“Node中http模块如何处理文件上传”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。查看请求数据如果我...
    99+
    2023-07-05
  • node.js使用express-fileupload中间件实现文件上传
    目录初始化项目 编写服务器 初始化客户端 编写组件 FileUpload Message.js Progress.js 测试 本文使用express作为服务端,使用express-f...
    99+
    2024-04-02
  • Node中Express的错误处理中间件怎么定义
    这篇文章主要介绍“Node中Express的错误处理中间件怎么定义”,在日常操作中,相信很多人在Node中Express的错误处理中间件怎么定义问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • Nodejs中怎么利用express和multer实现文件上传
    这期内容当中小编将会给大家带来有关Nodejs中怎么利用express和multer实现文件上传,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。非常简单,一行命令。npm&...
    99+
    2024-04-02
  • node.js如何使用express-fileupload中间件实现文件上传
    本篇内容介绍了“node.js如何使用express-fileupload中间件实现文件上传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目...
    99+
    2023-06-20
  • 云服务器部署node项目怎么弄出来的文件
    Node.js 使用Node.js进行node项目的部署需要下载并安装Node.js,可以使用以下命令进行安装: node_env install 安装完成后,在浏览器中输入localhost即可访问到项目所在的目录。在该目录下可...
    99+
    2023-10-28
    怎么弄 服务器 文件
  • 如何使用express+multer实现node中的图片上传功能
    小编给大家分享一下如何使用express+multer实现node中的图片上传功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容介绍如下所示:在前端中,我们使用ajax来异步上传图...
    99+
    2024-04-02
  • 怎么用node+multer中间件实现单文件、多文件上传
    本篇内容介绍了“怎么用node+multer中间件实现单文件、多文件上传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • 云服务器部署node项目怎么弄出来文件
    要将一个云服务器部署到另一个云服务器上,需要在云服务器上安装相应的客户端软件。下面是一个简单的步骤,将云服务器的文件添加到目标云服务器。 在终端中打开云服务器,选择“管理”。 在“文件管理”窗口中,找到“服务器文件”选项,如下图所示。 ...
    99+
    2023-10-27
    怎么弄 服务器 文件
  • vue文件切片上传的项目怎么实现
    这篇文章主要介绍“vue文件切片上传的项目怎么实现”,在日常操作中,相信很多人在vue文件切片上传的项目怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue文件切片上传的项目怎么实现”的疑惑有所帮助!...
    99+
    2023-07-05
  • 如何使用批处理上传文件到ftp目录下
    小编给大家分享一下如何使用批处理上传文件到ftp目录下,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!为了快速将项目中开发的补丁程序通过ftp快速上传到linux下...
    99+
    2023-06-08
  • php多文件上传怎么处理
    在 PHP 中处理多文件上传可以使用 $_FILES 超全局变量来获取上传文件的信息。首先,需要在表单中设置 enctype="mu...
    99+
    2023-10-12
    php
  • nodejs中怎么利用express实现一个文件上传功能
    这期内容当中小编将会给大家带来有关nodejs中怎么利用express实现一个文件上传功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。步骤:(1)使用express创建...
    99+
    2024-04-02
  • SpringBoot项目 文件上传临时目标被删除异常的处理方案
    1、业务背景 我们使用了SpringCloud 进行项目开发,其中一个主要服务(涉及到图片上传)的SpringBoot微服务在测试环境之中。因为此项目已经上线,很长一段时未针对此项目...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作