首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么我无法通过admin/将jpg文件上传到我的Django应用程序?

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

Stack Overflow用户
提问于 2009-09-09 20:48:09
回答 9查看 12K关注 0票数 17

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

models.py

代码语言:javascript
复制
class ImageMain(models.Model):
  product = models.ForeignKey(Product)
  photo = models.ImageField(upload_to='products')

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

上传有效的镜像。您上载的文件不是图像或图像已损坏。

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

代码语言:javascript
复制
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()

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

会出什么问题呢?

我成功地上传了一个png文件。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-09-09 21:35:09

在系统上编译/安装PIL之后,您是否安装了libjpeg?也许它找不到正确的解码器?

下面是我找到的一组关于如何在MacOS上很好地运行libjpeg和PIL的指令(参见最后;看起来您可能需要显式设置解码器的dir ):

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

票数 16
EN

Stack Overflow用户

发布于 2010-12-06 20:29:47

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

代码语言:javascript
复制
sudo apt-get install libjpeg-dev
sudo pip install PIL --upgrade

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

代码语言:javascript
复制
sudo pip uninstall PIL
sudo apt-get install libjpeg-dev
sudo pip install PIL

它适用于我,也希望它适用于你。

票数 16
EN

Stack Overflow用户

发布于 2012-10-25 00:01:56

注意,对于任何在Ubuntu上使用virtualenv得到这个错误的人来说,this post是很有帮助的。

基本上,Ubuntu将共享对象安装到pip不知道的位置。在本例中,pip期望系统库位于/usr/lib中,但Ubuntu将它们放在/usr/lib/x86_64-linux-gnu或其他依赖于架构的位置。

短期修复方法是简单地将库符号链接到/usr/lib中:

代码语言:javascript
复制
sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/
sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/

这修复了我在Ubuntu 12.04上的错误。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1402002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档