如何将上传文件保存到另一台服务器

如何将上传文件保存到另一台服务器

问题描述:

我目前使用的是django。现在我需要将用户上传的文件保存到另一台服务器上,该服务器不是服务于django应用程序的服务器。该文件将被保存到文件系统而不是数据库。有人可以告诉我如何做到这一点?如何将上传文件保存到另一台服务器

Django缺省行为是保存在文件系统中,而不是数据库本身)的文件。

您有几种选择如何做到这一点,最简单的是有一个文件系统从你的“其他”机导出并安装与Django应用程序的机器上。

对于文件系统导出,您可以使用NFS,MogileFS或GlusterFS(我正在使用)或更多:)。如果你不需要实时保存&服务,简单的rsync也可能是一个选项。

第二个选择是利用现有的Django机制StogareAPI。有already available不同的存储支持你可以使用,可能对你有帮助(例如ftp)。

+0

或smbfs或sshfs或任何十几个远程文件系统。 OP需要解释他们的意思更好一点。 – Spacedman 2011-03-20 18:58:41

这不会开箱即用,您需要有一个机制(编写一些代码)来排列通过django应用程序上传的文件,然后使用中间件(可以在python中)将文件从队列传输到你的文件服务器。所以流量基本上是这样的:

  1. 接受通过django应用程序上传的文件。
  2. django app。将文件信息(其临时路径和名称)写入队列
  3. 中间件应用程序读取队列中的下一个文件。
  4. 中间件应用程序使用一些传输协议(sftp,scp,ftp,http等)将文件复制到文件服务器。
  5. 中间件应用程序从django应用程序所在的位置删除该文件,因此django服务器没有该文件的副本。