nodejs에 업로드 된 이미지 URL 가져 오기

Sep 03 2020

nodejs multer를 사용하여 이미지 파일을 이미지 업로드 디렉토리에 업로드하고 있습니다. 업로드 후이 특정 이미지를 클라이언트 브라우저의 html img 태그에 어떻게 표시 할 수 있습니까? URL은 무엇입니까?

http : // localhost : 3000 / uploads / 1591342432.jpeg를 입력하면 파일을 가져올 수 없다는 메시지가 표시됩니다.

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, "./uploads/");
  },
  filename: function (req, file, cb) {
    cb(null, Date.now() + ".jpeg");
  },
});

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

router.post("/upload", upload.single("file"), async (req, res) => {
  try {
    console.log("uploading...");
    console.log(req.file.filename);
    res.json({ cool: "yes" });
    // res.json({ file: req.file });
  } catch (error) {
    console.log(error);
  }
});

답변

Hasham Sep 03 2020 at 19:25

multer를 사용하여 img를 uploads라는 로컬 폴더에 업로드하는 것 같습니다.

다음 자습서를 권장합니다. firebase에 img 업로드

이 가이드에서는 multer를 사용하여 클라우드 firebase를 업로드합니다. 이미지를 업로드하면 클라우드에 저장된 이미지에 대한 링크와 다른 서버에서 사용할 수있는 동일한 링크를 받게됩니다.

DarylWong Sep 03 2020 at 19:34

정적 디렉터리를 설정해야한다고 생각합니다.

app.use(express.static("uploads"));

그런 다음 이미지 파일에 다음과 같이 액세스 할 수 있습니다.

http://localhost:3000/1599134489853.jpeg
GregBrodzik Sep 03 2020 at 19:31

아직 설정하지 않은 경우를 통해 가져 오려고 할 때 이미지 리소스에 대한 GET 경로를 설정해야합니다 http://localhost:3000/1599134489853.jpeg. Express 앱의 경우 파일을 반환하는 현재 단순 / 선호 방법은 res.sendFile 입니다. 그렇지 않으면 여기에 설명 된대로 스트림을 생성하고 반환 할 수 있습니다 .