Python 将表单中的文件直接发送到远程服务器

Python 将表单中的文件直接发送到远程服务器,python,django,file-upload,Python,Django,File Upload,在我的应用程序中,我处理的是上传非常大的图像文件。它们将存储在远程服务器上,因此根据我所了解的情况,我需要编写一些自定义存储系统(可能使用python的模块)。由于文件的大小,我希望直接将文件发送到媒体服务器,而不将其存储在内存中(poster允许这样做)。但所有上传的文件都由UploadHandler类处理,它强制文件以某种方式(file、temp或内存)存储在本地。那么我该如何解决这个问题呢?根据,UploadedFile类应该有一个方法chunks(),它返回一个生成器。区块大小是可配置的

在我的应用程序中,我处理的是上传非常大的图像文件。它们将存储在远程服务器上,因此根据我所了解的情况,我需要编写一些自定义存储系统(可能使用python的模块)。由于文件的大小,我希望直接将文件发送到媒体服务器,而不将其存储在内存中(poster允许这样做)。但所有上传的文件都由UploadHandler类处理,它强制文件以某种方式(file、temp或内存)存储在本地。那么我该如何解决这个问题呢?

根据,UploadedFile类应该有一个方法
chunks()
,它返回一个生成器。区块大小是可配置的(默认为2.5 MB)。因此,您可以这样做(从文档中复制):

这将一块接一块地读入内存并将其写入文件。(因此内存中一次只有一个块)。您可能希望将open()的路径更改为NFS卷,那么每次调用write()都只会将当前块发送到NFS。(NFS将所有文件操作(如打开/写入/读取/查找/关闭)导出为RPC)。Samba的工作原理类似


或者,您也可以通过在媒体服务器上运行另一个服务来实现这种机制,该服务提供了一种将块附加到文件的方法。(无论如何,在我看来,使用NFS或Samba将是更好的选择)。

您可能会发现或类似的web服务器扩展非常有用。但是您必须从请求机器启动连接。

不幸的是,这不是一个选项,但在我发送此数据之后,存储将运行。还是我错了?
destination = open('some/file/name.txt', 'wb+')
for chunk in f.chunks():
    destination.write(chunk)
destination.close()