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