multer를 통해 파일을 업로드하기 전에 자동으로 폴더를 생성하여 해당 파일이 nodejs의 생성 된 폴더에 저장되도록하는 방법은 무엇입니까?

Biku7

이것은 여러 파일을 업로드하는 내 멀터 코드입니다.

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, './public/files/'+ req.user.id)
  },
  filename: function (req, file, cb) {
    x = file.originalname; //+path.extname(file.originalname);
  cb(null,x);
  }
});

var upload = multer({storage: storage});

제출을 클릭하면 파일이 제출되는 게시 요청입니다.

router.post(upload.array("FileUpload",12), function(req, res, next) {

//Here accessing the body datas.

})

그래서 제가 원하는 것은 생성 된 folder이름으로 첫 번째 파일 을 만들고에서 ID액세스 할 수 req.body있는 파일을 해당 폴더에 각각 업로드하는 것입니다. 그러나 body업로드 전에 첫 번째에 액세스 할 수 없기 때문에 각각을 만들 수 없습니다. folder directory.이것을 생각하고 구현할 수있는 다른 방법이 있습니까?

fs-extra 패키지를 사용하여 솔루션을 업데이트했습니다.

const multer = require('multer');
let fs = require('fs-extra');

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    let Id = req.body.id;
    fs.mkdirsSync('./public/files/'+ req.user.id + '/' + Id);
    cb(null, './public/files/'+ req.user.id + '/' + Id)
  },
  filename: function (req, file, cb) {
    x = file.originalname; //+path.extname(file.originalname);
  cb(null,x);
  }
});

var upload = multer({storage: storage});

제출을 클릭하면 파일이 제출되는 게시 요청입니다.

router.post(upload.array("FileUpload",12), function(req, res, next) {

//Here accessing the body datas.

})
아리아

먼저 설치해야 fs-extra폴더를 만들 것입니다

같은 멀터를위한 별도의 폴더 생성 multerHelper.js

const multer = require('multer');
let fs = require('fs-extra');

let storage = multer.diskStorage({
destination: function (req, file, cb) {
    let Id = req.body.id;
    let path = `tmp/daily_gasoline_report/${Id}`;
    fs.mkdirsSync(path);
    cb(null, path);
},
filename: function (req, file, cb) {
    // console.log(file);

    let extArray = file.mimetype.split("/");
    let extension = extArray[extArray.length - 1];
    cb(null, file.fieldname + '-' + Date.now() + "." + extension);
 }
})

let upload = multer({ storage: storage });

let createUserImage = upload.array('images', 100);

let multerHelper = {
    createUserImage,
}

module.exports = multerHelper;

경로에서 multerhelper 파일 가져 오기

const multerHelper = require("../helpers/multer_helper");

router.post(multerHelper , function(req, res, next) {

//Here accessing the body datas.

})

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관