将文件传输卸载到下游代理的django应用程序。
django-transfer的Python项目详细描述
简介
django项目建议从不同的web上提供静态文件 服务器,而不是执行Web应用程序的服务器。这很容易实现 当静态文件是web资产时。这些资源可以提供给任何 匿名用户,可以很容易地被缓存。但是,在某些情况下, 应用程序必须控制对文件的访问,甚至允许用户上载 文件夹。在这些情况下,需要严格控制流程, 这与Django项目的建议背道而驰。
幸运的是,有一些工具允许删除下载 甚至从应用服务器上传,同时仍然允许 控制整个过程。此django应用程序旨在帮助 与这些工具集成,以便您的web应用程序可以 文件传输到下游代理服务器,后者的设备更好 要处理此任务,请释放应用程序服务器 提升. < /P>
Django Transfer集成了:
- apache的mod xsendfile mod xsendfile
- nginx的x-accel-redirect
- lighttpd中的头
- 对于nginx,mod\u upload
上面的前三个允许web应用程序发出一个头 指示内容服务器将文件传输到http客户端。 这样,web应用程序仍然接收下载请求,执行任何 检查所需内容,并发送头而不是实际的文件内容。
最后,mod\u upload中的 mod\u upload也会执行类似的操作,但用于文件上载。 mod_upload将接收发送到服务器的文件并将其保存 临时文件。然后将请求转发到web 应用程序,将文件体替换为指向临时文件的路径 包含它们。
mod\u upload要比简单地缓冲上载要好,因为文件 应用服务器从不处理实体。事实上,如果你能 将临时文件写入同一卷上的保留区域 作为他们最后的位置,一个简单的动作就是完成的全部 上传。实际上,proxyUploadedFile类(包含在 request.files 有一个方便的 move() 方法。