node文件上传功能简易实现代码

发布时间 - 2026-01-11 01:55:17    点击率:

找了不少文件上传的相关模块,最后选择了比较常用,并且是express推荐使用的 multer 来实现文件上传,附上 GitHub 地址

1. 开始

开始第一步,自然就是安装模块,不多说

npm install multer --save

这里简单说一下,因为文件上传是用 post 方法提交数据,所以上传的单文件或者多文件会作为一个 body 体添加到请求对象中,我们可以通过 req.file 或者 req.files 查看上传后文件的相关信息。

以单文件上传为例,req.file 返回一个对象:

{
   "fieldname":"avatar",  #前端上传文件input的name
   "originalname":"Wx.php",  #本地文件名
   "encoding":"7bit",  #文件编码类型
   "mimetype":"text/php",  #文件类型
   "destination":"uploads/",  #上传根目录
   "filename":"1497286037422Wx.php",  #上传后文件名
   "path":"uploads/1497286037422Wx.php",  #文件路径
   "size":18174  #文件大小
}

该对象的 key 值是固定的,velue 值根据配置生成,用于实现相关逻辑

2. 实现

实现分两部分,前端和后端

前端

前端就是普通的写法,form 表单提交

<form action="/test/upload" method="post" enctype="multipart/form-data">
  <input type="file" name="avatar">
  <input type="submit" name="提交">
</form>

切记,enctype="multipart/form-data" 这个属性一定要加上,否则后台接收不到文件。

后端

首先我们新建配置文件,upload.js

// upload.js

var multer = require('multer');  # 引入模块

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/')
  },
  filename: function (req, file, cb) {
    cb(null, Date.now()+file.originalname)
  }
})

var upload = multer({ storage: storage })

module.exports = upload;

diskStorage方法相当于创建一个磁盘存储引擎,配置文件上传路径,文件名等,可控性更高。

destination  # 设置文件上传路径
filename    # 重命名文件

然后新建路由接收文件,file.js

// file.js 

var express = require('express');
var router = express.Router();

// 引入配置文件
var upload = require('../config/upload');

router.post('/upload', upload.single('avatar'), function(req, res, next) {
  res.send(req.file);
});

module.exports = router;

file.js 中 upload.single() 方法表示接受单文件,常用的有

upload.single(fname);  // 接收单文件
upload.array(fname[, maxCount])  //接收多文件,maxCount表示接收最大数量

fname 是前端 <input type="file" name="fname"> 的 name 值

基本的上传文件方法就这些了,当然还有很多的配置参数之类的设置,要参考 GitHub 说明,地址在开头,需要者自行查阅

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# node  # 文件上传  # nodejs  # nodejs实现文件上传  # 在Node.js中使用HTTP上传文件的方法  # Node.js实现文件上传  # NodeJS使用formidable实现文件上传  # nodejs+express实现文件上传下载管理网站  # Node.js模拟浏览器文件上传示例  # node.js文件上传处理示例  # Node.js实现兼容IE789的文件上传进度条  # Nodejs实现文件上传的示例代码  # 上传  # 配置文件  # 上传文件  # 后端  # 推荐使用  # 我们可以  # 更高  # 相关信息  # 找了  # 作为一个  # 为例  # 多说  # 表单  # 来实现  # 还有很多  # 创建一个  # 两部分  # 大家多多  # 重命名 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 文字头像制作网站推荐软件,醒图能自动配文字吗?  如何在腾讯云服务器快速搭建个人网站?  Laravel如何配置任务调度?(Cron Job示例)  如何在云主机上快速搭建多站点网站?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  Swift开发中switch语句值绑定模式  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  javascript中对象的定义、使用以及对象和原型链操作小结  瓜子二手车官方网站在线入口 瓜子二手车网页版官网通道入口  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  Win11关机界面怎么改_Win11自定义关机画面设置【工具】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  如何快速完成中国万网建站详细流程?  如何生成腾讯云建站专用兑换码?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  香港服务器网站推广:SEO优化与外贸独立站搭建策略  Laravel用户认证怎么做_Laravel Breeze脚手架快速实现登录注册功能  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何在云主机上快速搭建网站?  实现点击下箭头变上箭头来回切换的两种方法【推荐】  浅析上传头像示例及其注意事项  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何自定义分页视图?(Pagination示例)  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  制作公司内部网站有哪些,内网如何建网站?  Laravel集合Collection怎么用_Laravel集合常用函数详解  Laravel Octane如何提升性能_使用Laravel Octane加速你的应用  javascript中的try catch异常捕获机制用法分析  Python制作简易注册登录系统  Bootstrap整体框架之CSS12栅格系统  Laravel怎么判断请求类型_Laravel Request isMethod用法  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  如何在IIS中新建站点并配置端口与物理路径?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  bootstrap日历插件datetimepicker使用方法  Thinkphp 中 distinct 的用法解析  ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  浅谈redis在项目中的应用  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel如何实现数据库事务?(DB Facade示例)  制作电商网页,电商供应链怎么做?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】