为什么我不能通过admin /?将jpg文件上传到我的Django应用程序?

Bry*_*ock 17 python django

我正在尝试在我的Django应用程序中为我的模型添加图像.

models.py

class ImageMain(models.Model):
  product = models.ForeignKey(Product)
  photo = models.ImageField(upload_to='products')
Run Code Online (Sandbox Code Playgroud)

在开发模式下,每次我尝试通过Django管理员上传图像时,我都会得到:

上传有效图片.您上传的文件不是图像或损坏的图像.

我通过fink安装了libjpeg,然后在ox X 10.5.7上安装了PIL 1.1.6

from PIL import Image
file = open('/Users/Bryan/work/review_app/media/lcdtvs/samsung_UN46B6000_front.jpg', 'r')
trial_image = Image.open(file)
trial_image.verify()
Run Code Online (Sandbox Code Playgroud)

似乎jpg基于该会话是有效的.但是,它不会加载.我尝试过其他jpgs,它们也不起作用.

怎么可能出错?

我能够成功上传一个png文件.

pit*_*ess 16

在PIL已经在系统上编译/安装后你安装了libjpeg吗?也许它无法正确找到解码器?

这里有一组说明,我发现libjpeg和PIL在MacOS上很好地播放(看到最后;看起来你可能需要明确设置解码器的目录):

http://djangodays.com/2008/09/03/django-imagefield-validation-error-caused-by-incorrect-pil-installation-on-mac/


小智 16

我在Ubuntu服务器遇到了同样的问题,然后你可以通过在PIL之前安装libjpeg-dev来修复它.

sudo apt-get install libjpeg-dev
sudo pip install PIL --upgrade
Run Code Online (Sandbox Code Playgroud)

如果你已经在PIL之后安装了libjpeg-dev.然后你可以先删除PIL,然后尝试重新安装PIL,如下所示.

sudo pip uninstall PIL
sudo apt-get install libjpeg-dev
sudo pip install PIL
Run Code Online (Sandbox Code Playgroud)

它适用于我,希望它适合你.