我创建了一个使用sorl-thumbnail来调整上传图像大小的网站 . 大多数图像都没有任何问题调整大小,但很少有人收到以下错误:
Caught IOError while rendering: not enough data
Request Method: GET
Request URL: http://localhost:8000/user/nash22/photographs/
Django Version: 1.3.1
Exception Type: TemplateSyntaxError
Exception Value:
Caught IOError while rendering: not enough data
Exception Location: /usr/local/lib/python2.7/site-packages/PIL/TiffImagePlugin.py in load, line 382
Python Executable: /usr/local/bin/python
Python Version: 2.7.1
我在谷歌搜索但找不到任何相关的答案 . 有人可以帮我解决发生的事情以及如何解决这个问题?谢谢 .
编辑
完成回溯
Traceback(最近一次调用最后一次):文件“/lib/python2.7/django/core/handlers/base.py”,第111行,在get_response response = callback(request,* callback_args,** callback_kwargs)File“/ home / swaroop / project / apps / photography / views.py“,第702行,showPhoto context_instance = RequestContext(request))文件”/lib/python2.7/django/shortcuts/init.py“,第20行,在render_to_response中返回HttpResponse(loader.render_to_string(* args,** kwargs),** httpresponse_kwargs)文件“/lib/python2.7/django/template/loader.py”,第188行,在render_to_string中返回t.render(context_instance)文件“/lib/python2.7/django/template/base.py”,第123行,在渲染中返回self._render(context)文件“/lib/python2.7/django/template/base.py”,第117行,在_render中返回self.nodelist.render(context)文件“/lib/python2.7/django/template/base.py”,第744行,在render bits.append(self.render_node(node,context))File“/ lib / python2.7 / django / template / base.py“,第757行,在render_node中返回node.render(context)文件”/ lib /python2.7/django/template/loader_tags.py“,第127行,在渲染中返回compiled_parent._render(context)文件”/lib/python2.7/django/template/base.py“,第117行,在_render返回self.nodelist.render(context)文件“/lib/python2.7/django/template/base.py”,第744行,在render bits.append(self.render_node(node,context))文件“/ lib / python2 .7 / django / template / base.py“,第757行,在render_node中返回node.render(context)文件”/lib/python2.7/django/template/loader_tags.py“,第64行,在render result = block .nodelist.render(context)文件“/lib/python2.7/django/template/base.py”,第744行,在render bits.append(self.render_node(node,context))文件“/ lib / python2 . 7 / django / template / base.py“,第757行,在render_node中返回node.render(context)文件”/lib/python2.7/sorl/thumbnail/templatetags/thumbnail.py“,第45行,在渲染中返回self ._render(context)文件“/lib/python2.7/sorl/thumbnail/templatetags/thumbnail.py”,第97行,在渲染文件中,几何体,**选项文件“/lib/python2.7/sorl/thumbna il / base.py“,第61行,在get_thumbnail缩略图中)文件”/lib/python2.7/sorl/thumbnail/base.py“,第86行,在_create_thumbnail image = default.engine.create(source_image,geometry,options) )文件“/lib/python2.7/sorl/thumbnail/engines/base.py”,第15行,在create image = self.orientation(image,geometry,options)文件“/lib/python2.7/sorl/thumbnail /engines/base.py“,第26行,在方向返回self._orientation(image)文件”/lib/python2.7/sorl/thumbnail/engines/pil_engine.py“,第29行,在_orientation exif = image._getexif ()_getexif info.load(file)文件“/usr/local/lib/python2.7/site-packages/PIL/JpegImagePlugin.py”,第381行site-packages / PIL / TiffImagePlugin.py“,第382行,在load load IOError中,”数据不够“IOError:数据不够
1 回答
更新
image._getexif
据称是高度实验性的 . 参考sorl-thumbnail和issue #98,你可以更新代码它's caused by PIL'尝试加载已损坏或可能不受支持的TIFF文件 .
通常当你使用
forms.ImageField
时,Django会检查上传图像的正确性 .因此,您需要:
确保您使用
forms.ImageField
(models.ImageField
的默认设置)在您的视图中处理上传检查上传的图像
此外,您可以限制用户上传普通格式,如jpeg / png / gif而不是TIFF