6

我已经使用 Django 在 Heroku 上部署了一个应用程序,到目前为止它似乎正在运行,但我在上传新缩略图时遇到了问题。我已安装 Pillow 以允许我在上传图像时调整图像大小并保存调整后的缩略图,而不是原始图像。但是,每次上传时,我都会收到以下错误:“此后端不支持绝对路径。” 当我重新加载页面时,新图像在那里,但没有调整大小。我正在使用 Amazon AWS 来存储图像。

我怀疑它与我的models.py有关。这是我的调整大小代码:

class Projects(models.Model):
    project_thumbnail = models.FileField(upload_to=get_upload_file_name, null=True, blank=True)

    def __unicode__(self):
        return self.project_name

    def save(self):
        if not self.id and not self.project_description:
            return

        super(Projects, self).save()
        if self.project_thumbnail:
            image = Image.open(self.project_thumbnail)
            (width, height) = image.size

        image.thumbnail((200,200), Image.ANTIALIAS)
            image.save(self.project_thumbnail.path)

有什么我想念的吗?我需要告诉它别的吗?

4

3 回答 3

11

使用 Heroku 和 AWS,您只需将 FileField/ImageField 'path' 的方法更改为 'name'。因此,在您的情况下,它将是:

image.save(self.project_thumbnail.name)

代替

image.save(self.project_thumbnail.path)
于 2016-04-15T13:19:56.053 回答
2

我也在其他人的谷歌搜索的帮助下找到了答案,因为我的搜索没有找到我想要的答案。这是 Pillow 以及它如何使用绝对路径进行保存的问题,所以我改用 storages 模块作为临时保存空间,它现在正在工作。这是代码:

from django.core.files.storage import default_storage as storage

...

   def save(self):
        if not self.id and not self.project_description:
            return

        super(Projects, self).save()
        if self.project_thumbnail:
            size = 200, 200
            image = Image.open(self.project_thumbnail)
            image.thumbnail(size, Image.ANTIALIAS)
            fh = storage.open(self.project_thumbnail.name, "w")
            format = 'png'  # You need to set the correct image format here
            image.save(fh, format)
            fh.close()
于 2013-08-15T15:16:51.817 回答
1

NotImplementedError: This backend doesn't support absolute paths- 可以通过替换来file.path修复file.name

它在控制台中的外观

c = ContactImport.objects.last()

>>> c.json_file
<FieldFile: protected/json_files/data_SbLN1MpVGetUiN_uodPnd9yE2prgeTVTYKZ.json>

>>> c.json_file.name
'protected/json_files/data_SbLN1MpVGetUiN_uodPnd9yE2prgeTVTYKZ.json'
于 2021-09-10T16:59:10.707 回答