Hochladen der Bild-URL in nodejs
Ich verwende NodeJS Multer, um eine Bilddatei in das Verzeichnis zum Hochladen von Bildern hochzuladen. Wie kann dieses bestimmte Bild nach dem Hochladen im HTML-Tag im Client-Browser angezeigt werden? Was ist die URL?
Wenn ich http: // localhost: 3000 / uploads / 1591342432.jpeg eingebe, heißt es, dass die Datei nicht abgerufen werden kann.
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);
}
});
Antworten
Anscheinend verwenden Sie multer, um img in einen lokalen Ordner namens uploads hochzuladen.
Ich werde das folgende Tutorial empfehlen: Laden Sie img auf firebase hoch
In diesem Tutorial wird multer verwendet, um die Cloud-Firebase hochzuladen. Sobald Sie das Bild hochgeladen haben, erhalten Sie den Link zu dem Bild, in dem es in der Cloud gespeichert ist, und denselben Link, den Sie auf dem anderen Server verwenden können
Ich denke, ich muss ein statisches Verzeichnis festlegen:
app.use(express.static("uploads"));
Dann kann ich auf die Bilddatei zugreifen als:
http://localhost:3000/1599134489853.jpeg
Wenn Sie dies noch nicht getan haben, müssen Sie den GET-Pfad für die Bildressource festlegen, wenn Sie versuchen, über abzurufen http://localhost:3000/1599134489853.jpeg. Für eine Express-App scheint die derzeitige einfache / bevorzugte Methode zum Zurückgeben der Datei res.sendFile zu sein . Andernfalls können Sie Streams generieren und wie hier gezeigt zurückkehren .