Загрузка файлов и раздача статических файлов
Дайте пользователям отправлять файлы на сервер и отдавайте файлы обратно, не перегружая память
- раздавать папку с ресурсами через
express.static, - объяснить, что такое
multipart/form-dataи почемуexpress.json()не может это прочитать, - принимать одиночные и множественные загрузки через multer (хранение на диске и в памяти),
- отправлять файлы обратно через
res.sendFile,res.downloadи поток.
1. Раздача статики через express.static
Статический файл — это файл, который сервер отдаёт без изменений: картинка, CSS, шрифт, PDF для скачивания. Писать отдельный маршрут для каждого из них не нужно. В Express есть встроенное middleware express.static, которое автоматически сопоставляет папку на диске с URL-адресами.
const express = require('express');
const path = require('path');
const app = express();
// Serve every file inside ./public at the site root
app.use(express.static(path.join(__dirname, 'public')));
app.listen(3000);
Теперь файл public/logo.png доступен по адресу http://localhost:3000/logo.png без вашего собственного маршрута. Express также сам ставит правильный Content-Type, поддерживает заголовки кэширования и отвечает на HTTP range-запросы.
Часто ресурсы удобно вынести под префикс URL, чтобы они не пересекались с маршрутами API. Передайте путь монтирования первым аргументом:
// Mount the same folder under a URL prefix
app.use('/static', express.static('public'));
// public/logo.png -> http://localhost:3000/static/logo.png
// public/css/app.css -> http://localhost:3000/static/css/app.css
express.static на корень проекта — иначе вы раздадите свой исходный код и node_modules.