Skip to main content
 首页 » 编程设计

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

2025年05月04日22findumars

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

有人能告诉我怎么做吗?

请您参考如下方法:

您实际上不能同时执行这两项操作:

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

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

有几种方法可以将文件放到文件服务器上

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