multer创建文件夹,如果不存在

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了multer创建文件夹,如果不存在相关的知识,希望对你有一定的参考价值。

我在multer的文档中看到,如果文件夹不存在,则multer不会创建文件夹。如果不存在该如何创建一个文件夹?

import multer from 'multer'
import crypto from 'crypto'
import { extname, resolve } from 'path'
import slug from 'slug'

export default {
  storage: multer.diskStorage({
    destination: resolve(__dirname, '..', '..', 'uploads', 'gallery'),
    filename: (req, file, cb) => {
      const { id, description } = req.body

      crypto.randomBytes(8, (err, res) => {
        if (err) return cb(err)

        return cb(null, id + '/' + res.toString('hex') + '/' + slug(description, { lower: true }) + extname(file.originalname))
        // return cb(null, res.toString('hex') + extname(file.originalname))
      })
    }
  })
}
答案

我已更改为:

import multer from 'multer'
import crypto from 'crypto'
import { extname } from 'path'
import slug from 'slug'
import fs from 'fs'

export default {
  storage: multer.diskStorage({
    destination: (req, file, cb) => {
      const { id } = req.body
      const path = `./uploads/gallery/${id}`
      fs.mkdirSync(path, { recursive: true })
      return cb(null, path)
    },
    filename: (req, file, cb) => {
      const { description } = req.body

      crypto.randomBytes(3, (err, res) => {
        if (err) return cb(err)

        return cb(null, slug(description, { lower: true }) + '_' + res.toString('hex') + extname(file.originalname))
      })
    }
  })
}

以上是关于multer创建文件夹,如果不存在的主要内容,如果未能解决你的问题,请参考以下文章

如果我不上传文件,如何从npm的multer获取请求的正文?

Multer 使用数据创建新文件夹

有人可以在快速数组中给出“如果不存在则追加”方法的片段吗?

如果未使用 multer 在 nodejs 中选择文件,则不更新

在使用 Multer 将文件上传到文件夹之前删除和创建文件夹

如何在multer中检查文件类型