我有一个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。正如我所说,我对组和perms进行了更改,以允许服务器写入文件。
同样,当我直接通过管理员保存模型或模型时,它给了我正确的链接,那里没有文件。
如果有人可以帮助我解决这个问题,我会永远感激
答案 0 :(得分:0)
您可以尝试设置变量来定义本地存储:
local_storage = FileSystemStorage(location=SITE_ROOT, base_url='/post_photos')
然后在您的模型上使用它:
photo = models.FileField(storage=local_storage)