我目前使用来自自定义桌面应用程序的上传模块(http://www.grid.net.ru/nginx/upload.en.html)上传到 nginx 服务器上的 web 服务,该应用程序执行简单的多部分形式 POST 发送文件在一部分中,而 base64 编码的 XML 与文件的元数据在另一部分中。
服务器接收到这个 POST,将它传递给我的网络服务,它读取元数据,处理文件,一切都很好。
我现在要做的是使用上传模块的upload_resumable 指令分块进行POST,以最大程度地减少断开连接的机会并允许恢复。我目前可以按照此处描述的协议执行此操作:http: //www.grid.net.ru/nginx/resumable_uploads.en.html
一个发送文件的字节范围以及一些标题以在多个帖子中识别块和会话,一旦所有部分都上传,nginx 将组成包含文件名和路径的最终 POST 并将其传递到您的 upload_pass 位置(在我的情况下,这是一个 django 应用程序的 CGI)。
但是,我不清楚如何使用这种方法发送多部分帖子,因为协议表明 POST 的主体必须是字节范围内指示的字节。我需要最后一篇文章来包含我在上面写的 XML。
我可以考虑将 XML 作为正文的第一个字节和一个标头发送,该标头指示属于它的字节数,但这意味着需要对最终文件进行额外处理以删除该标头,并且最终文件可能在 GB 大小范围内.
还有其他想法吗?