express获取文件

express上传图片


前言

express获取文件的写法比较独特,与我之前接触python后端完全不一样,所以我单独记录一下,内容比较水。


1.multer是什么

程序未动,代码先上

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




var HTTP = express.Router();
const upload = multer();   //这种写法就很奇怪
HTTP.post('/Inpaint', upload.any(), proc_inpaint);   //只有加了这个,才能正常使用req.body,upload可以跟多种方法,不止是any()
async function proc_inpaint(req, _res) {
    
    

     var token = req.body.sid;
     const stamp = req.headers.stamp || false;
    
     if (!token || !stamp || (token !== req.session.uid)) return res.status(401).json({
    
    msg: code_msg.AccessDenied.message});
     try {
    
    
         const now = Date.now();
         const stamp = token.stamp;
         // token expired
         if (now - stamp >  24 * 60 * 60 * 1000) {
    
    
             return res.status(403).json({
    
    msg: 'token过期'});
         }
     } catch (error) {
    
    
         return res.status(403).json({
    
    msg: 'token无效'});
     }


    var cmd = "Inpaint";
    var file_type = req.body.file_type || false;

    res.json({
    
     message: 'Hello, World!' });
}

在 Express 应用中,multer 是一个用于处理 multipart/form-data 的中间件,通常用于处理文件上传。multipart/form-data 是一种编码类型,允许在一个请求中包含文本和文件数据。

为什么使用multer?

  • 处理 multipart/form-data
    Express 自带的中间件(如 body-parser)能够解析 JSON 和 URL 编码的数据,但无法处理 multipart/form-data。而 multer 专门设计用于处理这种类型的数据,特别适合用于文件上传。

  • 文件解析与存储
    multer 能够将上传的文件解析为文件对象,并提供几种不同的存储方式:

    内存存储(MemoryStorage):将文件存储在内存中,以 Buffer 的形式提供。这种方式适合在处理后立即将文件传递到其他服务(如云存储)。
    磁盘存储(DiskStorage):将文件存储在本地磁盘上,提供了对文件保存路径和文件名的完全控制。

  • 支持多文件上传
    multer 支持同时上传多个文件,可以通过简单的配置处理单文件上传、多文件上传,或者按字段名分组上传文件。

  • 文件过滤与验证
    multer 允许在文件上传过程中进行文件类型的过滤和验证,例如:

    1.限制只接受某些类型的文件(如图片或 PDF)。
    2.限制上传文件的大小。

  • 安全性
    multer 帮助避免常见的文件上传安全问题,比如防止用户通过上传恶意文件来攻击服务器。它可以限制文件的数量、大小,并通过过滤器限制文件类型。


猜你喜欢

转载自blog.csdn.net/hola173841439/article/details/141729699