Какой код статуса HTTP должен использоваться для UPLOAD_ERR_PARTIAL?

Я разрабатываю REST API, и у меня есть загрузка файлов:

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

Это обычно происходит, если пользователь отменяет загрузку (см. Почему файл может быть частично загружен и ошибки загрузки файлов на php.net)

UPLOAD_ERR_PARTIAL задается, когда граница mime не найдена после данных файла. Возможно, причиной этого является то, что загрузка была отменена пользователем (нажата ESC и т.д.).

Ответ 1

Вы должны использовать код состояния 409 для этого случая.

Согласно http://www.ietf.org/rfc/rfc2616.txt:

Запрос не может быть выполнен из-за конфликта с текущим состояние ресурса. Этот код разрешен только в ситуациях, когда ожидается, что пользователь сможет разрешить конфликт
и повторно отправьте запрос. Тело ответа ДОЛЖНО включать достаточно информация для пользователя, чтобы распознать источник конфликта.
В идеальном случае объект ответа будет содержать достаточную информацию для пользователь или пользовательский агент для устранения проблемы; однако, это может быть не возможно и не требуется.

Ответ 2

Если загрузка пользователя не удалась из-за того, что что-то не так с тем, что они загружают, просто скажите: 400 Bad Request

Ответ 3

Вам не нужно отправлять код состояния, так как клиент уже отключен.

Ответ 4

Я бы пошел либо с 422 (запрос не мог быть выполнен из-за семантических ошибок), либо 449 (запрос должен быть повторен после выполнения действия).

Посмотрите httpstatuses.com.

Ответ 5

UPLOAD_ERR_PARTIAL задается, когда граница mime не найдена после данных файла.

411 Требуемая длина

В запросе не указана длина его содержимого, которое требуется запрашиваемому ресурсу

Ответ 6

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

Ответ 7

Я думаю, что заголовок должен основываться на контексте ошибок:

если загрузка файла не является допустимым типом:

  • HTTP_415 = 'Неподдерживаемый тип носителя

если файл слишком большой:

  • HTTP_413 = 'Request Entity Too Large'

если на сервере возникла проблема с загрузкой:

  • HTTP_500 = 'Внутренняя ошибка сервера'

если время выгрузки:

  • HTTP_504 = 'Тайм-аут шлюза'

но в целом, я бы сказал, что 500 довольно стандартный.

Ответ 8

Я бы использовал

408 Тайм-аут запроса. Поскольку это указывает, что запрос был отправлен частично (что в данном случае не поддерживается)

400 Плохой запрос выглядит как другой вариант.

Вы также можете создать свой собственный, используя не зарезервированный номер.

Но где вы отправляете ответ, если запрос отменен?