Файл и ответ сервера

Не скачивается файл с сайта

Проверяем ссылку, доступ к файлу, ответ сервера и обработку загрузки в браузере. Возвращаем посетителю рабочее скачивание документа, архива или сформированного отчёта.

Диагностика

От клика
до сохранённого файла

Мы проверяем действие последовательно. Кнопка должна создать правильный запрос, сервер должен вернуть доступный файл, а браузер должен получить понятные заголовки и завершить загрузку.

01

Ссылка или кнопка

Сверяем href, атрибут download, обработчик клика, параметры документа и отсутствие перекрывающего слоя.

02

Доступ к ресурсу

Проверяем ответы 200, 403 и 404, авторизацию, срок временной ссылки и права пользователя на конкретный файл.

03

Заголовки ответа

Смотрим Content-Type, Content-Length и Content-Disposition, включая кодировку имени и режим attachment.

04

Формирование

Проверяем, успевает ли приложение создать PDF, таблицу или архив и не попадает ли текст ошибки внутрь файла.

05

Облако и CDN

Сверяем подпись URL, перенаправления, CORS, доступность исходного объекта и передачу диапазонов для крупных файлов.

06

Браузеры

Тестируем мобильную загрузку, блокировку всплывающих окон, Blob-адреса, внешние приложения и повторный клик.

Результат

Посетитель получает нужный файл целиком

Выдача контролируется

Открытый файл доступен по ссылке, а закрытый выдаётся только пользователю с нужными правами.

Имя и формат понятны

Браузер получает правильный тип, расширение и имя без нечитаемых символов.

Ошибка не маскируется

Сайт не сохраняет HTML-страницу ошибки под видом PDF или архива и показывает следующий шаг.

Порядок работ

Проверяем сам файл и способ его выдачи

Для первого разбора нужен URL страницы, название кнопки и ожидаемый тип файла. Если документ доступен после входа, согласуем тестового пользователя с минимальными правами.

01

Повторяем запрос

Фиксируем браузер, статус ответа, цепочку переходов, заголовки и размер полученных данных.

02

Находим источник

Отделяем ошибку ссылки от доступа, формирования документа и внешнего хранилища.

03

Исправляем выдачу

Меняем маршрут, заголовок, генератор или правила доступа с учётом защиты закрытых документов.

04

Тестируем варианты

Проверяем мобильный браузер, авторизацию, повторную загрузку, имя файла и недопустимый доступ.

Документация MDN по Content-Disposition объясняет разницу между показом файла в браузере и выдачей как вложения. Конкретное поведение также зависит от типа ресурса и браузера.

Границы работ

Закрытые документы нельзя превращать в публичные

Для файлов личного кабинета сохраняем проверку пользователя и объекта. Прямая постоянная ссылка может решить видимую ошибку, но открыть документ посторонним. Если файл создаёт бухгалтерская система, CRM или сторонний генератор, для диагностики понадобятся тестовые данные и журнал этого сервиса. Повреждённый исходник нужно заменить или сформировать заново: заголовки ответа не восстановят отсутствующее содержимое.

Вопросы

Перед исправлением

Почему файл открывается вместо скачивания?

Проверяем тип ресурса, атрибут download и Content-Disposition. Браузер учитывает все три сигнала.

Почему скачивается повреждённый PDF?

В файл могла попасть ошибка приложения, генерация могла оборваться, либо сервер отдал неполный ответ.

Почему скачивание не работает на телефоне?

Тестируем Blob-адрес, всплывающее окно, внешний просмотрщик, разрешения и запуск загрузки после асинхронного действия.

Чем скачивание отличается от загрузки файла?

При загрузке пользователь отправляет файл сайту. При скачивании сервер выдаёт файл пользователю, поэтому цепочка и ограничения другие.

Первый шаг

Покажите кнопку и ожидаемый файл

Пришлите адрес страницы, устройство и описание результата. Закрытый документ с личными данными передавать не нужно.