Django:如何将用户提交的文件直接上传到另一台服务器?

时间:2012-09-19 18:22:58

标签: python django file-upload django-file-upload

  • 我正在使用Django 1.4。
  • 有两台服务器(应用服务器和文件服务器)。
  • 应用服务器使用django,wsgi和apache提供Web服务。
  • 用户可以通过网络服务上传文件。
  • 我想直接将这些文件上传到文件服务器。
  • “直接”表示不通过应用服务器上传文件。
  • 我想让文件服务器尽可能简单。文件服务器只提供文件。
  • 理想情况下,应用服务器和文件服务器之间的转移成本为零。

有人能告诉我怎么做吗?

2 个答案:

答案 0 :(得分:0)

我认为django 1.4需要的是static url setting,以便从应用服务器提供文件服务器文件。 要将文件上传到文件服务器,您可以编写托管在此服务器上的python或php脚本(假设使用apache2服务器或类似服务器)来完成工作。

我有这个想法,我认为你不需要跟踪上传的文件(考虑到使用这个解决方案,你就是不能)

答案 1 :(得分:0)

你不能同时做到这两件事:

  • 我想直接将这些文件上传到文件服务器。
  • 我想让文件服务器尽可能简单。文件服务器只提供文件。

根据您的要求,文件服务器需要同时提供文件和接受文件上传。

有几种方法可以将文件存入FileServer

  • 最简单的方法,就是上传到AppServer,然后将其上传到另一台服务器。这就是大多数AmazonS3实现的样子。
  • 如果两台计算机位于同一LAN上,则可以使用NFS或类似方法将一定量的FileServer挂载到AppServer上。用户上传到AppServer,但数据将保存到FileServer上的分区。
  • 您可以在FileServer上安装文件上传脚本。但是,你需要做一些复杂的事情:
    • 有一种机制来验证上传文件的能力。你不能只使用authtkt,你需要有一些东西,允许一个只有一个文件上传以及某种标识符和特权令牌。我可能会选择加盖时间戳的加密有效负载,并具有上传权限凭据+文件的ID。
    • 成功上传从FileServer到AppServer的回调,让它知道有效负载中的id已成功接收。