【问题标题】:store files in a remote server Django将文件存储在远程服务器 Django
【发布时间】:2015-01-13 21:49:35
【问题描述】:

我有一个模型,我有 FileField 来上传一些文档。我将文件保存到我的文件系统中。我想知道是否可以使用 ftp 或其他方法将文件保存在另一台服务器中。 例如,我的 django 应用服务器在主机 192.168.0.1 中运行,我想将文件存储在 IP 为 192.168.0.2 的主机中。

我可以通过 ftp 毫无问题地访问我要存储文件的服务器。

型号:

class Documentacion(models.Model):
      id_doc = models.AutoField(primary_key=True)
      id_proceso = models.ForeignKey(Proceso,db_column='id',verbose_name='Proceso')
      tipo_docu = odels.CharField(max_length=100,null=False,blank=False,verbose_name='Tipo Doc.')
      fecha = models.DateField(auto_now = True)
      autor = models.CharField(max_length=50,blank=False,null=False)
      descripcion = models.CharField(max_length=250,blank=True,null=True)
      documento = models.FileField(upload_to='docs/')

我的媒体设置:

MEDIA_ROOT = os.path.join(BASE_DIR,'media')
MEDIA_URL = '/media/'

【问题讨论】:

    标签: python django django-models django-storage


    【解决方案1】:

    如果您仔细阅读文档,FileField#upload_to 只是定义本地文件系统路径。

    您可以做的一件事是:让用户正常上传内容,然后当您在文件系统中有内容时,运行一个进程将文件上传到另一台服务器,也就是您的 ftp 服务器,您可以使用ftplib 库来存档。

    也许使用Django Storages 会减轻您的工作负担。

    【讨论】:

    • 我也是这么想的,但是当用户尝试下载文件时,如何使用 django 应用程序从 ftp 获取文件。
    • 你会有文件的 url 对吗?如果是这样,它应该是微不足道的,只需读取文件并通过 HTTP 检索它。由于您应该编写或使用 FileField 扩展或自定义字段,因此您将在 FileField 中公开诸如“File#path”或“File#url”之类的方法。 django-storages 再次使用 FileField,您只需将“storage=FTPStorage()”作为参数传递即可使用 FTP,因为它是一个 FileField,所以您拥有它的所有方法。
    • 好的,谢谢,我会尝试你的建议。很有帮助
    • 这行不通,Django-storages 文档也没有清楚地解释如何配置 ftp 凭据和 IP 方向
    • 您是否在 settings.py 文件中设置了:“FTP_STORAGE_LOCATION = '[a]ftp://:@:/[path]'” ?. Check out the source code.
    猜你喜欢
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    相关资源
    最近更新 更多