express + multer 实现文件上传(二)-- 限制上传

注:最好看完了上一篇express + multer 实现文件上传(一)-- 基本上传后再看该内容

在这我们对上传做了一些限制:

const express = require('express');
const router = express.Router();
const multer = require('multer');
 
let upload = multer({
    limits:{
        //限制文件大小10kb
        fileSize: 10*1000,
        //限制文件数量
        files: 5
    },
    storage: multer.diskStorage({
        destination: function (req, file, cb) {
            // if (file) {
                cb(null, './uploads/');
            // }
        },
        filename: function (req, file, cb) {
            // if (file) {
                var changedName = (new Date().getTime())+'-'+file.originalname;
                cb(null, changedName);
            // }
        }
    }),
    fileFilter: function(req, file, cb){
        // 限制文件上传类型,仅可上传png格式图片
        if(file.mimetype == 'image/png'){
            cb(null, true)
        } else {
            cb(null, false)
        }
    }
});
 
let singleUpload = upload.single('singleFile');
//单个文件上传
router.post('/single',(req,res)=>{
    singleUpload(req,res,(err)=>{
        if(!!err){
            console.log(err.message)
            res.json({
                code: '2000',
                type:'single',
                originalname: '',
                msg: err.message
            })
            return;
        }
        if(!!req.file){
            res.json({
                code: '0000',
                type:'single',
                originalname: req.file.originalname,
                msg: ''
            })
        } else {
            res.json({
                code: '1000',
                type:'single',
                originalname: '',
                msg: ''
            })
        }
    });
});

let multerUpload = upload.array('multerFile');
//多个文件上传
router.post('/multer', (req,res)=>{
    multerUpload(req,res,(err)=>{
        if(!!err){
            res.json({
                code: '2000',
                type:'multer',
                fileList:[],
                msg: err.message
            });
        }
        let fileList = [];
        req.files.map((elem)=>{
            fileList.push({
                originalname: elem.originalname
            })
        });
        res.json({
            code: '0000',
            type:'multer',
            fileList:fileList,
            msg:''
        });
    });
});

 
module.exports = router;

这里面可以看到,对文件大小和类型做了相应限制,文件过大的话会进入err,文件类型不对的话不会进 err 

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Express是一个流行的Node.js框架,用于构建Web应用程序。Multer是一个Express中间件,用于处理HTTP请求中的文件上传操作。 使用Multer可以轻松处理表单中的文件上传。它提供了一些功能,例如限制文件类型、文件大小和保存文件等。 在使用ExpressMulter时,你需要首先安装它们的npm包。可以通过以下命令安装: ``` npm install express multer ``` 然后,在你的Express应用程序中,导入这些模块并将其配置为中间件。下面是一个简单的示例: ```javascript const express = require('express'); const multer = require('multer'); // 创建Express应用程序 const app = express(); // 配置Multer中间件 const upload = multer({ dest: 'uploads/' }); // 定义文件上传路由 app.post('/upload', upload.single('file'), (req, res) => { // 处理上传的文件 console.log(req.file); // 上传的文件信息 res.send('File uploaded!'); }); // 启动服务器 app.listen(3000, () => { console.log('Server is listening on port 3000'); }); ``` 在上面的示例中,我们创建了一个Express应用程序,并将Multer配置为中间件。使用`upload.single`方法可以处理单个文件上传,其中`'file'`参数是表单字段的名称。 当客户端发送带有文件的POST请求到`/upload`路由时,中间件会将文件保存到指定的目录(在此示例中为`uploads/`),并将文件信息存储在`req.file`对象中。你可以根据需要进一步处理文件,例如将其移动到其他地方或将其保存到数据库中。 这只是一个简单的示例,你可以根据自己的需求进行更复杂的配置和处理。希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值