Создание запроса HTTP POST для загрузки файла вручную - PullRequest
1 голос
/ 09 декабря 2011

В конечном итоге я пытаюсь вручную создать правильное тело POST для отправки запроса из программы на Си (ну, Objective-C).

Я начал с изучения данных, отправленных пользователемотправляет веб-форму с приложенным файлом.Я надеюсь, что кто-то может помочь прояснить некоторые начальные недоразумения, которые у меня возникают:

  1. Предположим, что загруженный файл является png-файлом.Как это кодируется на клиенте?Как веб-сервис узнает, как файл был закодирован, чтобы он мог успешно преобразовать его обратно в данные изображения.У меня есть UIImage, но я пытаюсь выяснить, как записать его в строку тела, чтобы веб-сервер знал, что означают эти данные.

  2. Ниже приведены некоторые данные поста.что я изучал.Он представляет несколько переменных формы, а также простой файл png.Я подтвердил, что сервер получил запрос и добавил мою фотографию в свою базу данных.У меня вопрос: почему я не вижу фактические данные, которые представляют закодированное изображение?Похоже, что нигде в этом теле поста.

Большое спасибо за помощь.

Content-Disposition: form-data; name="user"

someUser
------WebKitFormBoundaryDPIav9ZBBnDSAURS
Content-Disposition: form-data; name="description"

Description of a photo
------WebKitFormBoundaryDPIav9ZBBnDSAURS
Content-Disposition: form-data; name="photo"; filename="simple.png"
Content-Type: image/png


------WebKitFormBoundaryDPIav9ZBBnDSAURS
Content-Disposition: form-data; name="commit"

Create
------WebKitFormBoundaryDPIav9ZBBnDSAURS--

1 Ответ

2 голосов
/ 09 декабря 2011

В случае файла он будет принимать необработанные байты для файла, оканчивающегося на \r\n--boundry, однако вы можете дополнительно указать Content-Length и Content-Encoding , которые могут быть base64, gzip, base64-gzip и несколько других типов.

------WebKitFormBoundaryDPIav9ZBBnDSAURS
Content-Disposition: form-data; name="photo"; filename="simple.png"
Content-Type: image/png
Content-Length: 17829
Content-Encoding: base64

H4sIAAAAAAAAC+y9aZPj1pE2+p2/oq4mYmQHLGHfPHJPAAQJEDuJlRhPOLADJPad+LXvx9f3L9wv
F1XVkrqlakm2ZY9HVkdXFXHOQZ5Ensx8MnESxFf/uZTF0xR3fV5Xf/gM/hL67CmuwjrKq/QPn50M
7QuKwukv4M/+893uK/fIyU/b+Kr/w2fZMDS/B8F5nr/Uxy4+RGn8ZViX4PMYkHgm8zLw90Hjfzy6
C8vmi7QLv0zDL0P/62Hh2A91+SNk9y+Dvj4livs8reLu0ydx70ds/MBfn7UkUfETuH+3e3p6+iot
.....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...