node 实现文件上传中间件

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: node 实现文件上传中间件

node js 实现文件上传


实现了一个文件上传的中间件,重点引用了一个文件上传的库,multer


传送门


const express = require('express');
const router = express.Router();
const path = require('path');
const multer = require('multer');
exports.successMsg = function (msg, datas) {
    return {
        code: 200,
        msg: msg,
        datas: datas
    }
}
// 文件存入磁盘
const storage = multer.diskStorage({
    destination: function (req, file, cb) {
        cb(null, path.resolve(__dirname, './../../public/upload'))
    },
    filename: function (req, file, cb) {
        const ext = path.extname(file.originalname);
        const fileName = Date.now() + '-' + Math.random().toString(36).slice(-6) + ext;
        cb(null, fileName)
    }
})
const upload = multer({storage});
router.post('/', upload.single('img'), (req, res) => {
    const obj = exports.successMsg('上传成功', {
        url: 'upload/' + req.file.filename,
    })
    res.status(200).send(obj);
})
module.exports = router;


效果如下:


20201226152031700.png


原理


get vs post : 文件上传有好多人的误区是只能用post,对于这一点来说,我个人是不太赞同的,get 和 post 都是基于http上的一种数据传输协议,而对于文件上传来说,文件本身是比较大的数据,我们在传输的时候理论上是可以使用get的,只是这么做的性价比不是最好的。


contentType: 对于文件上传来说,我们一般是使用multipart/form-data,但是我们能不能使用contentType 为 json 呢? 理论上也是可以的,我们把文件转成base64的字符串是一种方式,还有就是使用 ArrayBuffer 来装文件的二进制的数据。


文件上传multer的原理


2020122615280227.png


如上图,我们可以看见文件上传的contentType 为 multipart/form-data,里面有一个boundary(边界),在取数据的时候其实是通过这个边界的字符串一个一个分开的,然后在通过流的方式来进行一段一段的传输,从而获取文件或者其他的数据信息


相关文章
|
8小时前
|
中间件
|
8月前
|
JSON JavaScript 中间件
node.js中Express框架路由,中间件
node.js中Express框架路由,中间件
|
8小时前
|
存储 JavaScript 前端开发
❤Nodejs 第十四章(node中间件multer的认识安装使用)
【4月更文挑战第14天】Multer是Node.js用于处理multipart/form-data的中间件,专注于文件上传。。基本用法包括设置存储引擎,如磁盘存储(DiskStorage)或内存存储(MemoryStorage),并指定处理单个或多个文件的方法。例如,`multer.single('file')`处理单个文件上传。存储引擎DiskStorage适合永久保存,而MemoryStorage适合临时处理。可以通过`limits`选项限制文件大小,实现不同类型的文件有不同的大小限制。
30 0
|
7小时前
|
开发框架 JavaScript 中间件
深入探索Node.js的Express框架:使用与中间件详解
【4月更文挑战第30天】本文深入探讨了Node.js的Express框架,介绍了其作为Web开发的强大工具,主要聚焦于基本使用和中间件。Express是基于Node.js的Web应用框架,用于构建高效的应用和API。文章详细讲解了如何安装Express,创建简单应用,以及中间件的工作原理和应用,包括中间件的顺序、错误处理和挂载位置。此外,还提到了使用第三方中间件扩展功能。理解Express基础和中间件对于开发高质量Web应用至关重要。
|
8小时前
|
中间件
node使用multer进行文件上传
node使用multer进行文件上传
|
8小时前
|
前端开发
node+express+ multer 实现文件上传入门
node+express+ multer 实现文件上传入门
|
8小时前
|
JavaScript 前端开发 中间件
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
Node.js—Express使用、Express 路由 、Express 中间件、托管静态资源、使用 Express 写接口、node.js链接sqlite数据库
128 0
|
9月前
|
JavaScript 中间件
Node.js学习笔记----中间件的分类
Node.js学习笔记----中间件的分类
|
8月前
node+express4+multiparty实现简单文件上传
node+express4+multiparty实现简单文件上传
38 0