podczas tworzenia interfejsów API oczekuje się potrzeby przesyłania plików, którymi mogą być między innymi obrazy, dokumenty tekstowe, skrypty, pliki PDF. W rozwoju tej funkcjonalności można znaleźć pewne problemy, takie jak liczba plików, prawidłowe typy plików, rozmiary tych plików i kilka innych. Aby uchronić nas przed tymi problemami, mamy bibliotekę Multer. Multer jest węzłem.oprogramowanie pośredniczące js do obsługi multipart/form-data, które służy do wysyłania plików w formularzach.

pierwsze kroki

pierwszym krokiem jest utworzenie projektu NodeJS na komputerze.

dodając Express

w swoim terminalu wpisz następujące polecenie:

yarn add express

* możesz również użyć NPM do instalacji

Utwórz plik o nazwie app.js wewnątrz folderu src/. Kolejnym krokiem jest uruchomienie naszego serwera Express w naszym app.js

const express = require("express")const app = express()app.listen(3000 || process.env.PORT, () => { console.log("Server on...")})

dodawanie Multer

po utworzeniu projektu, skonfigurowaniu i zainstalowaniu Express dodamy multer do naszego projektu.

yarn add multer

następnym krokiem jest zaimportowanie multera do naszego pliku app.js.

const multer = require("multer")

już prawie jesteśmy. Teraz utwórz folder o nazwie uploads, w którym będziemy przechowywać przesłane pliki.

Konfigurowanie i Walidacja uploadu

teraz jesteśmy na bardzo ważnym etapie, którym jest konfiguracja diskStorage. DiskStorage to metoda udostępniana przez multer, w której konfigurujemy miejsce docelowe pliku, nazwę pliku, a także możemy dodać walidacje dotyczące typu pliku. Ustawienia te są zgodne z potrzebami projektu. Poniżej zostawię elementarny przykład konfiguracji.

const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, "uploads/") }, filename: (req, file, cb) => { cb(null, Date.now() + "-" + file.originalname) },})

w powyższej konfiguracji wymieniliśmy miejsce docelowe dla przesyłanych plików, a także zmieniliśmy nazwę pliku .

podając trasę wysyłania

const uploadStorage = multer({ storage: storage })// Single fileapp.post("/upload/single", uploadStorage.single("file"), (req, res) => { console.log(req.file) return res.send("Single file")})//Multiple filesapp.post("/upload/multiple", uploadStorage.array("file", 10), (req, res) => { console.log(req.files) return res.send("Multiple files")})

w powyższym fragmencie kodu utworzyliśmy 2 Trasy wysyłania plików. Pierwsza trasa /upload/single otrzymuje tylko jeden plik, zauważ, że zmienna uploadStorage otrzymuje nasze ustawienia diskStorage. Jako oprogramowanie pośredniczące w trasie, wywołuje metodę single do przesłania pojedynczego pliku. Trasa /upload/multiple odbiera kilka plików, ale z maksymalnym limitem 10 plików, należy zauważyć, że zmienna uploadStorage wywołuje teraz metodę array ’ do przesyłania wielu plików.

koniec

po wykonaniu wszystkich ustawień, nasze małe API jest już w stanie przechowywać wysłane pliki.

const express = require("express")const multer = require("multer")const app = express()const storage = multer.diskStorage({ destination: (req, file, cb) => { cb(null, "uploads/") }, filename: (req, file, cb) => { cb(null, Date.now() + "-" + file.originalname) },})const uploadStorage = multer({ storage: storage })// Single fileapp.post("/upload/single", uploadStorage.single("file"), (req, res) => { console.log(req.file) return res.send("Single file")})//Multiple filesapp.post("/upload/multiple", uploadStorage.array("file", 10), (req, res) => { console.log(req.files) return res.send("Multiple files")})app.listen(3000 || process.env.PORT, () => { console.log("Server on...")})

teraz wszystko zależy od Ciebie!

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.