#image #http #multipart #uploading
#изображение #http #multipart #загрузка
Вопрос:
Когда я ищу способы загрузки изображения на сервер, я чаще нахожу учебные пособия, в которых описывается комплексный подход. Мне любопытно, почему multipart лучше, чем простая загрузка необработанного двоичного файла?
Ответ №1:
Через некоторое время я столкнулся со значительной проблемой, связанной с отправкой данных в виде заголовков, за исключением параметров. OkHttp по умолчанию не допускает использование символов, отличных от ASCII, в заголовках. Это приводит к сбою, который можно исправить, добавив заголовок небезопасным способом:
private fun createHeaders(dataHeader: FileUploadDataHeader): Headers =
Headers.Builder()
.add(UPLOAD_HEADER_COMMAND, UPLOAD_HEADER_COMMAND_VALUE)
.add(HEADER_TOKEN_NAME, userSettings.sessionUser.uuid)
.addUnsafeNonAscii(UPLOAD_HEADER_DATA, dataHeader.toString())
.build()
Было бы лучше использовать составной запрос или, по крайней мере, кодировать значение, отличное от ASCII, а затем декодировать его на сервере. Но это требует сотрудничества с серверными разработчиками, что не всегда возможно.