Carregar o URL da imagem em nodejs

Sep 03 2020

Estou usando o nodejs multer para fazer upload de um arquivo de imagem para o diretório de uploads de imagens. Após o upload, como esta imagem em particular pode ser exibida na tag html img no navegador do cliente. Qual é o url?

Quando digito http: // localhost: 3000 / uploads / 1591342432.jpeg, ele diz que não é possível obter o arquivo.

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);
  }
});

Respostas

Hasham Sep 03 2020 at 19:25

Parece que você está usando o multer para enviar imagens para uma pasta local chamada uploads.

Vou recomendar o seguinte tutorial: upload img to firebase

Este tutorial usa multer para fazer upload do Cloud Firebase. Depois de fazer o upload da imagem, você receberá o link para a imagem onde ela está armazenada na nuvem e o mesmo link que você pode usar no outro servidor

DarylWong Sep 03 2020 at 19:34

Acho que preciso definir um diretório estático:

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

Então posso acessar o arquivo de imagem como:

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

Se ainda não o fez, você precisará definir o caminho GET para o recurso de imagem ao tentar obter via http://localhost:3000/1599134489853.jpeg. Para um aplicativo expresso, parece que o método simples / preferido atual para retornar o arquivo é res.sendFile . Caso contrário, você pode gerar fluxo e retornar conforme demonstrado aqui .