Récupérer l'url de l'image dans nodejs
J'utilise nodejs multer pour télécharger un fichier image dans le répertoire de téléchargement d'images. Après le téléchargement, comment cette image particulière peut-elle être affichée dans la balise html img dans le navigateur client. Quelle est l'url?
Lorsque je tape http: // localhost: 3000 / uploads / 1591342432.jpeg, il dit impossible d'obtenir le fichier.
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);
}
});
Réponses
Il semble que vous utilisez multer pour télécharger img dans un dossier local appelé uploads.
Je recommanderai le tutoriel suivant: upload img to firebase
Ce tutoriel utilise multer pour télécharger la base de feu cloud. Une fois que vous téléchargez l'image, vous obtiendrez le lien vers l'image où elle est stockée sur le cloud et le même lien que vous pouvez utiliser sur l'autre serveur
Je pense que j'ai besoin de définir un répertoire statique:
app.use(express.static("uploads"));
Ensuite, je peux accéder au fichier image en tant que:
http://localhost:3000/1599134489853.jpeg
Si vous ne l'avez pas déjà fait, vous devrez définir le chemin GET pour la ressource image lors de la tentative de récupération via http://localhost:3000/1599134489853.jpeg. Pour une application express, il semble que la méthode actuelle simple / préférée pour renvoyer le fichier soit res.sendFile . Sinon, vous pouvez générer un flux et un retour comme illustré ici .