Гипотетический report.xlsx имеет размер 8 KB и открывается как страница входа. Программа успешно сохранила файл, но так и не получила нужную таблицу. Имя файла выбирается локально; оно не доказывает, что именно пришло.

Сделайте приёмку отдельным шагом перед публикацией временной загрузки:

  1. Требуйте успешной передачи и ожидаемого статуса ответа. Сохраняйте ошибку, а не считайте байты, записанные до неё, полными.
  2. Сравните содержимое с ожидаемым типом файла. Страница входа или фильтра может вернуть 200. Content-Type может быть неверным, а HTML-префикс в таблице — это предупреждение, требующее расследования. Файл, начинающийся с строки статуса HTTP, указывает скорее на необработанную рамку ответа.
  3. Проверяйте все сохранённые байты по доверенной контрольной сумме или подписи, когда они доступны. Публиковать или использовать итоговый файл приложение должно только после прохождения необходимых проверок.

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

Будьте осторожны и при сравнении размеров. HTTP-клиент может декодировать кодирование содержимого во время чтения, поэтому длина полученного файла может законно отличаться от заголовка, описывающего закодированное сообщение. Сравнивайте ожидание издателя с фактически сохранённым представлением.

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

Похожие статьи