【问题标题】:Upload to absolute path in Django上传到Django中的绝对路径
【发布时间】:2015-06-22 19:21:17
【问题描述】:

我试图让 FileField 的 upload_to 成为绝对路径,而不是相对于 MEDIA_ROOT。如果我将路径设为绝对路径,我会在文件发布时收到 400 错误。如果没有前导 / 它存储在 MEDIA_ROOT 下。上传的文档需要安全保存,而不是在 MEDIA_ROOT 下,但我也有需要进入 MEDIA_ROOT 的图像,因此无法将其更改为公共区域。

这是我的代码...

class Document(models.Model):
def get_upload_path(instance, filename):
    path = os.path.join( settings.DOCUMENT_DIR,  str(instance.client.id), 'documents',  str(instance.id), filename)
    return path

uploaded = models.FileField(null=True, blank=True, upload_to=get_upload_path, max_length=255)

有什么想法吗?

【问题讨论】:

  • 可以试试 django get_absolute_url() 方法
  • 我看不出这有什么帮助。我想我刚刚找到了一些支持我遇到问题的文档。 code.djangoproject.com/ticket/12589 这一切都很好,但我需要这样做,而且当我的代码非常清楚时,我不明白为什么 Django 会强迫我将文档上传到不安全的位置!

标签: django


【解决方案1】:

您应该能够为每个存储位置创建不同的FileSystemStorage 实例。

或者,您可以编写 custom storage system 来处理文件。

【讨论】:

    猜你喜欢
    • 2020-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2012-10-16
    • 2020-08-05
    • 1970-01-01
    • 2010-11-15
    相关资源
    最近更新 更多