【发布时间】:2011-04-17 02:55:27
【问题描述】:
我在一个视图中有以下代码:
from django.core.files.temp import NamedTemporaryFile
...
image_url = request.POST['url']
name = urlparse(image_url).path.split('/')[-1]
picture = Picture()
picture.user = request.user
img_temp = NamedTemporaryFile(delete=True)
img_temp.write(urllib2.urlopen(image_url).read())
img_temp.flush()
picture.picture.save(name, File(img_temp))
picture.save()
效果很好,但我想确保“img_temp”实际上是一个图像。我怎样才能做到这一点?
编辑:
我找到了解决方案。 python中有一个名为imghdr的模块,它对文件进行字节级验证以查看它们是否为图像。可以这样使用:
from django.core.files.temp import NamedTemporaryFile
import imghdr
image_url = request.POST['url']
name = urlparse(image_url).path.split('/')[-1]
picture = Picture()
picture.user = request.user
img_temp = NamedTemporaryFile(delete=True)
img_temp.write(urllib2.urlopen(image_url).read())
img_temp.flush()
to_save = File(img_temp)
to_save.open()
extension = imghdr.what(to_save)
if not extension in ['jpg', 'jpeg', 'png', 'gif']:
to_save.close()
return None
picture.picture.save(name, to_save)
foto.save()
如果您在此代码中发现任何错误,请告诉我。
【问题讨论】:
标签: django django-views