【问题标题】:Django Image Upload Fails...File not written to directory (weird bug)Django 图片上传失败...文件未写入目录(奇怪的错误)
【发布时间】:2011-08-03 14:07:43
【问题描述】:

我有一个 Django 模型,它应该通过 ImageField 将图像上传到我服务器上的媒体目录。

我之前在 linux 服务器上成功地完成了此操作。在这种情况下,我将组更改为 www-data 并将权限更改为 g+w 以允许 apache 将文件写入特定的媒体文件夹以及媒体根目录。

当我通过我的管理门户和网站前端的模型表单保存模型时,模型会验证。正如预期的那样,文件的链接存储在数据库中。但是文件没有被写入。

这很令人困惑,因为 A) 它在我的本地服务器上运行,B) 我有一个不同的模型,可以成功地将图像保存并写入我的服务器。我不明白为什么这两个东西都在工作,而另一个图像上传失败。

这是我的模型:

    class Post_Photo(models.Model):
       post=models.ForeignKey(Post,blank=True,null=True)
       photo=models.FileField(upload_to="post_photos") 

       def __unicode__(self):
           return str(self.post)

这是我的设置文件:

    MEDIA_ROOT = '/home/public_html/media'

目录 post_photos 位于 /home/public_html/media/post_photos。正如我所说,我对组和权限进行了更改以允许服务器写入文件。

同样,当我直接通过管理员保存模型表单或模型时,它会为我提供正确的链接,只是那里不存在文件。

如果有人能帮我解决这个问题,我将永远感激不尽

【问题讨论】:

  • 你是如何运行 Django 的? mod_wsgi 还是 mod_python?

标签: image apache upload django


【解决方案1】:

您可以尝试设置一个变量来定义您的本地存储:

local_storage = FileSystemStorage(location=SITE_ROOT, base_url='/post_photos')

然后在你的模型上使用它:

photo = models.FileField(storage=local_storage)

【讨论】:

    猜你喜欢
    • 2012-12-25
    • 2023-02-08
    • 2019-10-10
    • 2011-09-22
    • 2011-03-26
    • 2023-02-10
    • 2019-10-03
    • 2018-06-22
    • 1970-01-01
    相关资源
    最近更新 更多