2017-12-19 11 views
0

이미지를 업로드하는 데 multer를 사용하고 있는데 데이터베이스에 저장하는 링크를 생성하고 있습니다. 그러나 이렇게하려면 먼저 파일을 서버에 저장하고 있습니다. "링크"는 확장명과 함께 파일의 이름이지만 나중에 데이터베이스에 저장하거나 함수를 실행하기 위해 "링크"에 대한 전역 변수를 설정하는 방법에 대해 머리를 감싸는 데 문제가 있습니까?멀터 변수에서 전역 변수 설정

var link; 
var storeImageData = multer.diskStorage({ 
    destination: function(req, file, callback) { 
     callback(null, './uploads'); 
    }, 
    filename: function(req, file, callback) { 
     var fileType = file.originalname; 
     link = shortid.generate() + "." + fileType; 
     callback(null, link); 
    } 
}); 

console.log(link); 

"링크"를 설정하려하지만 분명히 작동하지 않습니다. 이 일을 할 수있는 방법이 있습니까? 아니면 내가 조사해야 할 것이 있습니까?

답변

1

req 링크를 저장하고 db에 저장할 때 액세스 할 수 있습니다. 를 heres 예 : 당신의 이름 기능에서

:에서 다음

filename: function(req, file, callback) { 
     var fileType = file.originalname; 
     link = shortid.generate() + "." + fileType; 
     req.link = link; //add this line 
     callback(null, link); 
    } 

당신의 "dB로 저장"당신이 req.link에있는 링크를 얻을 수 있습니다 middlware.

+0

입력 해 주셔서 감사합니다. 내 미들웨어에서 req.link에 액세스 할 수 없어 결국이 코드를 사용할 수 없었습니다. 그러나 결국 내 코드가 작동하지 않는 이유는 내 전역 변수의 배치가 올바른 블록에 있지 않았기 때문이라고 깨달았습니다. 이제는 정류 된 상태로 완벽하게 작동합니다. socket.io를 사용할 때 내 전역 변수는 주 소켓 연결 외부에 배치되어야합니다. – AlphaDaemon