Http ‘multipart / form-data’ против необработанного двоичного файла ‘image / jpeg’ для загрузки изображений?

#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, а затем декодировать его на сервере. Но это требует сотрудничества с серверными разработчиками, что не всегда возможно.