Hochladen der Bild-URL in nodejs

Sep 03 2020

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

Hasham Sep 03 2020 at 19:25

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

DarylWong Sep 03 2020 at 19:34

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
GregBrodzik Sep 03 2020 at 19:31

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 .