使用upload_module和multipart / form进行nginx可恢复上传

时间:2011-06-01 00:32:02

标签: nginx upload multipart resume-upload

我目前使用来自自定义桌面应用程序的上传模块(http://www.grid.net.ru/nginx/upload.en.html)上传到nginx服务器上的web服务,执行简单的多部分POST,一个部分发送一个文件,另一个部分发送base64编码的XML另一部分中的文件元数据。

服务器接收此POST,将其传递给我的webservice,webservice读取元数据,处理文件,一切都很好。

我现在要做的是使用upload模块的upload_resumable指令在几个块中执行POST,以最大限度地减少断开连接机会并允许恢复。我现在可以按照此处描述的协议执行此操作:http://www.grid.net.ru/nginx/resumable_uploads.en.html

一个发送文件的字节范围以及一些标题以识别几个帖子中的块和会话,并且一旦所有部分都被上传,nginx将组成包含文件名和路径的最终POST并将其传递给您upload_pass位置(在我的情况下CGIs到django应用程序)。

但是,我不清楚如何使用此方法发送多部分帖子,因为协议指示POST的主体必须是字节范围中指示的字节。我需要最后的帖子也包含我上面写的XML。

我可以考虑将XML作为正文的第一个字节发送,并且标题指示属于它的字节数,但这意味着需要额外处理最终文件以删除该标头,并且最终文件可能位于GB尺寸范围。

还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

由于nginx支持的协议明确指出帖子不应该是多部分我最终在正文中发送文件,其余的参数在URL中编码。不是最漂亮的URL,但它的工作原理。