По умолчанию node.js и Express не обслуживают никаких файлов. Таким образом, вы не можете указать браузеру путь к некоторому месту на жестком диске вашего сервера и ожидать, что веб-сервер отправит файлы. Это не делает этого (в отличие от того, что ожидают люди, знакомые с Apache).
Вам понадобится маршрут на вашем сервере, который указывает на каталог publi c. Есть несколько способов сделать это, но вот один:
<img src='/public/avatar-pictures/3fVZNShyQRAtBbipvzVrDwDD.png'/>
Затем на вашем сервере вы бы использовали промежуточное ПО express.static()
для создания маршрута, который ищет URL-адреса, начинающиеся с /public
, и будет обслуживать файлы из каталога publi c на жестком диске, которые соответствуют пути URL-адреса:
app.use("/public", express.static("../../public"));
Путь, который вы передаете express.static()
, должен указывать на каталог publi c на вашем местный жесткий диск. Вы не раскрываете свою локальную файловую структуру, поэтому я не могу точно сказать, что это должно быть. Приведенный выше пример будет относиться к текущему рабочему каталогу, когда ваша программа была запущена. Возможно, более распространенным является создание пути самостоятельно из каталога модуля. Итак, если каталог public
находится на два уровня выше каталога вашего модуля, вы можете сделать это:
app.use("/public", express.static(path.join(__dirname, "../../public")));
И тогда он более конкретно привязан к каталогу вашего модуля и не зависит от текущего рабочий каталог, который можно изменить с помощью кода или способа запуска вашей программы.
Конечно, вы также можете использовать полный путь:
app.use("/public", express.static(path.join("/someVol/users/me/myProject/public")));
Имейте в виду что промежуточное программное обеспечение express.static()
открывает все дерево каталогов, на которое вы указываете, для доступа publi c, поэтому вы должны быть абсолютно уверены, что там есть только publi c. По умолчанию express.static()
не разрешает ..
в путях, поэтому запрос не может выйти из указанного вами каталога.