express multer如何上傳不同大小的不同類型的文件

const express = require("express");
const multer  =  require("multer");
const makeDir = require('make-dir');
const fs = require('fs');
const path = require('path');

const upload = multer({
  storage: Storage,  
  fileFilter: (req, file, cb) => {
    console.log("upload fileFilter req ::", req.file); 
      checkFileType(file, cb);
  }
}).fields(
  [
    {
      name:'comppic',
      maxCount:1
    },
      {
      name:'userpic',
      maxCount:1
      },
      {
      name:'usercv',
      maxCount:1
      }      
  ]
);

function checkFileType(file, cb) {    
  console.log("file:::::::::::::::", file);
}

我用上面的代碼上傳文件。在這種情況下,我如何檢查文件的大小是上傳和返回錯誤,如果文件大小超過。

console.log("upload fileFilter req ::", req.file);  // output undefined
console.log("file:::::::::::::::", file);

output

file::::::::::::::: {
  fieldname: 'userpic',
  originalname: 'DSC01416.JPG',
  encoding: '7bit',
  mimetype: 'image/jpeg'
}

請幫我解決這個問題。

? 最佳回答:

不同的文件大小限制基于文件類型,req.rawHeaders中有文件大小,所以我在fileFilter中寫了一個基于文件類型的邏輯,這對我來說是工作,multer set.any對于multer。req.rawHeaders是數(shù)組,其中一項(xiàng)是文件大小,在我的請求中,文件大小在數(shù)組的最后一項(xiàng),所以我使用了req.rawHeaders.slice(-1)[0]

在這個邏輯中,.pdf < 1 Mb.png,.jpeg,.jpg < 4 Mb的大小

const multer = require('multer');
const { v4: uuid } = require("uuid");

const TYPE_IMAGE = {
  'image/png': 'png',
  'image/jpeg': 'jpeg',
  'image/jpg': 'jpg'
};
const TYPE_File = {
  'application/pdf': 'pdf',
};

const fileUpload = 
  multer({
    limits: 500000, 
    storage: multer.diskStorage({
      destination: (req, file, cb) => {
        cb(null, 'uploads/images');
      },
      filename: (req, file, cb) => {
        const ext = (TYPE_IMAGE[file.mimetype]) ? TYPE_IMAGE[file.mimetype] : TYPE_File[file.mimetype];
        cb(null, uuid() + '.' + ext);
      }
    }),
    fileFilter: (req, file, cb) => {
      let size = +req.rawHeaders.slice(-1)[0]
      let isValid =false;
      if(!!TYPE_IMAGE[file.mimetype] && size < 4 * 1024 * 1024  ){
        isValid = true
      }
      if(!!TYPE_File[file.mimetype] && size < 1 * 1024 * 1024  ){
        isValid = true
      }
      let error = isValid ? null : new Error('Invalid mime type!');
      cb(error, isValid);
    }
  }).any();


module.exports = fileUpload;
主站蜘蛛池模板: 亚洲爆乳精品无码一区二区| 日韩在线一区二区三区免费视频| 亚洲中文字幕无码一区二区三区| 女女同性一区二区三区四区| 无码人妻品一区二区三区精99 | 在线视频精品一区| 一区二区三区免费视频播放器| 亚洲精品精华液一区二区| 蜜桃传媒视频麻豆第一区| 香蕉久久AⅤ一区二区三区| 无码丰满熟妇一区二区| 2021国产精品一区二区在线| 色老板在线视频一区二区| 免费一区二区三区四区五区| 成人毛片无码一区二区| 国产乱码一区二区三区| 无码少妇一区二区三区| 国产在线无码视频一区二区三区| 国产伦精品一区二区三区视频猫咪| 国模一区二区三区| 国产精品久久久久久一区二区三区 | 亚洲AV成人一区二区三区观看| 无码成人一区二区| 无码精品人妻一区二区三区漫画| 国产一在线精品一区在线观看| 亚洲国产精品一区二区九九| 麻豆视频一区二区三区| 国产丝袜一区二区三区在线观看| av一区二区三区人妻少妇| 亚洲精品日韩一区二区小说| 亚洲一区AV无码少妇电影| 波多野结衣一区二区| 性色AV一区二区三区天美传媒| 日本一区二区三区爆乳| 无码中文字幕乱码一区| 精品国产区一区二区三区在线观看| 日本一区二区三区不卡视频| 在线免费视频一区| 无码毛片一区二区三区中文字幕| 一区二区三区精品视频| 国产成人无码AV一区二区|