В настоящее время я загружаю в веб-сервис на сервере nginx, используя модуль загрузки (http://www.grid.net.ru/nginx/upload.en.html) из пользовательского настольного приложения, выполняя простой POST, состоящий из нескольких частей, который отправляет файл в одну часть, и XML-код в формате base64 с метаданные файла в другой части.
Сервер получает этот POST, передает его моему веб-сервису, который читает метаданные, обрабатывает файл и все в порядке.
Теперь я хочу использовать директиву upload_resumable модуля загрузки, чтобы выполнить процедуру POST несколькими порциями, чтобы минимизировать шансы на отключение и разрешить возобновление. В настоящее время я могу сделать это, следуя протоколу, описанному здесь: http://www.grid.net.ru/nginx/resumable_uploads.en.html
Один отправляет байтовые диапазоны файла вместе с некоторыми заголовками, чтобы идентифицировать чанк и сеанс в нескольких сообщениях, и как только все части будут загружены, nginx создаст окончательный POST, содержащий имя файла и путь, и передаст его вашему Местоположение upload_pass (в моем случае это CGI для приложения django).
Тем не менее, мне неясно, как можно отправить многосоставное сообщение с помощью этого метода, поскольку протокол указывает, что тело сообщения POST должно быть байтами, указанными в диапазоне байтов. Мне нужно, чтобы последний пост также содержал XML, о котором я писал выше.
Я могу думать об отправке XML в качестве первых байтов тела и заголовка, который указывает, сколько байтов принадлежит ему, но это будет означать дополнительную обработку окончательного файла для удаления этого заголовка, и окончательные файлы потенциально находятся в Размерный ряд ГБ.
Есть еще идеи?