4. Дополнительные проверки
- Убедитесь, что на диске достаточно места.
- Проверьте логи ошибок Nginx (`/var/log/nginx/apiMyServernLive-error.log`) на предмет других проблем.
Если ошибка сохраняется, сообщите — продолжим диагностику!
Ограничение размера запроса в Restify:
В конфигурации Restify для плагина bodyParser установлено значение
maxBodySize: 1000000,
Это означает, что сервер принимает запросы размером до ?1 МБ, что значительно меньше 100 МБ. Хотя в конфигурации Nginx лимит выставлен на 500 МБ, именно Restify ограничивает размер тела запроса. Решением будет увеличить параметр maxBodySize до значения, превышающего размер вашего файла (например, 150 * 1024 * 1024 для 150 МБ).
Ручная установка заголовка Content-Type при использовании FormData:
При отправке данных с помощью объекта FormData браузер автоматически формирует корректный заголовок Content-Type с нужными параметрами (границей multipart form data). Когда вы вручную указываете заголовок
"Content-Type": "multipart/form-data",
отсутствует необходимая информация о boundary, что может привести к неверной обработке данных сервером.
Рекомендации по исправлению:
Увеличьте лимит в Restify:
Измените конфигурацию плагина bodyParser, например, на
server.use(
restify.plugins.bodyParser({
maxBodySize: 150 * 1024 * 1024, // 150 МБ
}),
restify.plugins.queryParser({})
);
Это позволит принимать файлы большего размера.
Удалите ручную установку Content-Type:
При использовании FormData в fetch-запросе не устанавливайте заголовок Content-Type вручную. Достаточно удалить его из объекта headers, чтобы браузер мог установить его правильно:
const res = await fetch(GB.apiURL + "/customers/" + localStorage.getItem("id") + "/uploadMediaFile", {
method: "POST",
body: formData,
headers: {
Authorization: "jwt " + localStorage.getItem("token"),
// Не указывайте "Content-Type", браузер сам его добавит
},
});
Оставлять заявки могут только авторизованные пользователи.
Помощь с Restify Multipart form data Error 413
Реклама
Помощь с Restify Multipart form data Error 413
Привет всем,
Требуется помощь разобраться почему не заливается файл размером 100 mb на Restify через Nginx из формы при помощи multipart form data.
Nginx log
127.0.0.1 - - [08/Feb/2025:12:37:46 +0000] "OPTIONS
/customers/63c2dcfaf11af09ce4a955fd/uploadMediaFile HTTP/1.0" 204 0
"https://myServer.live/" "Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U
Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Mobile
Safari/537.36"
Nginx server
server {
server_name api.myServer.live;
listen 80;
client_max_body_size 500M;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
access_log /var/log/nginx/apiMyServerLive-access.log;
error_log /var/log/nginx/apiMyServernLive-error.log;
}
}
Restify
const server = restify.createServer({});
server.use(
restify.plugins.bodyParser({
maxBodySize: 1000000,
}),
restify.plugins.queryParser({})
);
Загружаю файл
async function uploadMediaFi...