2017-02-03 2 views
1

multer를 사용하여 이미지를 업로드하고 싶습니다. 하지만 작동하지 않습니다. 여기서 뭐가 잘못 됐니?Node.js에서 멀터를 사용하여 파일을 업로드하는 방법은 무엇입니까?

이 코드는 내 경로 파일에 있습니다.

var multer = require('multer'); 
var upload = multer({ dest: 'public/uploads/' }); 

이것은 내 게시물 경로입니다.

router.post('/addNewFood', upload.single('avatar'),function (req, res, next) { 
console.log(req.files); 
}); 
+0

http://lollyrock.com/articles/express4-file-upload/ –

+0

어떤 특정 오류가 있습니까? –

답변

0

시도해보십시오. 표현과 노드를 사용했습니다.

var storage = multer.diskStorage({ 
 
    destination: function (req, file, cb) { 
 
    cb(null, 'public/uploads/') 
 
    }, 
 
    filename: function (req, file, cb) { 
 
    cb(null, file.originalname) 
 
    } 
 
}); 
 

 
var upload = multer({ storage: storage }).single('avatar'); 
 

 
router.post('/addNewFood', //Your authentication check,// 
 
    function (req, res, next) { 
 

 
    upload(req, res, function(err) { 
 
     if (err) { 
 
      res.redirect(req.headers.referer + "/error.html"); 
 
      return; 
 
     } 
 

 
     if (!req.files) { 
 
      res.redirect(req.headers.referer + "/error.html"); 
 
      return; 
 
     } else { 
 
      //Implement your own logic if needed. Like moving the file, renaming the file, etc. 
 
      res.redirect(req.headers.referer); 
 
     } 
 
    }); 
 
    } 
 
);

1

NPM 당신은 서버 측에서 을 다음과 같은 방법을 시도 할 수 있습니다

--save multer를 설치 당신이 패키지를 설치합니다, 경로 또는 컨트롤러 파일에서 멀터를 구성하십시오 :

var multer = require('multer'); 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
     cb(null, 'public/images/uploads') 
    }, 
    filename: function (req, file, cb) { 
     cb(null, Date.now() + '-' + file.originalname)  
    } 
}) 
var upload = multer({ storage: storage }); 

저장 개체에서 대상은 파일 업로드 위치를 나타냅니다. 따라서 프로젝트 디렉토리에서/public/images/uploads 경로가 생성되었는지 확인하십시오. 그렇지 않으면 파일 경로를 변경하려고 할 수 있습니다.

또한 저장 개체의 파일 이름은 약자이며, 업로드 된 파일 이름은 무엇입니까? 여기서 모든 파일 이름을 고유하게 만들기 위해 원래의 파일 이름으로 현재 시간을 추가합니다. 원하는 경로에 이제

, 당신의 파일을 업로드 이제
router.post('/', upload.single('image'), (req, res) => { 
    //here your other task. 
}); 

을 가정합니다. 클라이언트 측에서 동일한 이름 (이 경우 '이미지')을 사용하고 있는지 확인하십시오.

<input type="file" name="image" id="image" class='form-control'> 

이것은 단일 파일 업로드 절차입니다. 자세한 내용은이 link을 확인 여러 파일

router.post('/', upload.array(), function (req, res, next) { 
    //your task goes here 
}); 

를 들어 .

관련 문제