С помощью Express вы должны создать маршрут, который будет обрабатывать URL-адреса ваших изображений. По умолчанию Express (или встроенный веб-сервер node.js) не обслуживает ЛЮБЫЕ файлы. Таким образом, он будет обслуживать файл, только если вы создадите обработчик для этого конкретного URL-адреса и запрограммируете этот обработчик для доставки нужного файла.
Если ваши изображения находятся непосредственно в файловой системе, где базовое имя файла URL совпадает с фактическим именем файла в файловой системе сервера, вы можете использовать express.static()
для создания единого маршрута, который будет обслуживать все ваши изображения.
Например, вы можете использовать express.static так:
app.use("/uploads/users", express.static("/uploads/users"));
Это позволило бы URL, запрошенный из:
http://localhost:9000/uploads/users/myphoto.jpg
для автоматического обслуживания из серверной файловой системы на
/uploads/users/myphoto.jpg
Аналогично будет работать для любого другого подходящего имени в этом же каталоге (или даже подкаталогах этого каталога, если подкаталог также был в URL).
Как правило, вы не хотите отображать имена внутренних путей, такие как /uploads/users
, вплоть до HTML-страниц пользователя. Таким образом, вы можете сделать это вместо этого на странице HTML:
<img src="/images/myphoto.jpg">
И это на сервере:
app.use("/images", express.static("/uploads/users"));
Это будет принимать любые http-запросы, начинающиеся с пути /images
, и искать соответствующее имя файла в /uploads/users
на сервере, таким образом, не раскрывая внутренности структуры каталогов вашего сервера клиенту. Он создает понятие абстрактного /images
URL-адреса, который ваш сервер может затем обработать и получить изображения, где бы они ни хранились на сервере.