通常,Web2py错误很容易理解,但这让我很难过。
我使用了web2py cookbook中的一个例子来制作上传图片的缩略图。它生成缩略图,但我无法检索文件。我收到以下错误:
<type 'exceptions.TypeError'>(Can't retrieve auth_user.thumb.a7433c1cbe652f44.jpg)
该文件位于uploads目录中,可以使用图像查看器查看,但我无法从数据库中调用它。来自数据库管理员或通过视图。
当我点击数据库管理员的链接时,这是Traceback。
Traceback (most recent call last):
File "/home/www-data/web2py/gluon/restricted.py", line 212, in restricted
exec ccode in environment
File "/home/www-data/web2py/applications/Urban_Gatherer/controllers/appadmin.py", line 464, in <module>
File "/home/www-data/web2py/gluon/globals.py", line 194, in <lambda>
self._caller = lambda f: f()
File "/home/www-data/web2py/applications/Urban_Gatherer/controllers/appadmin.py", line 140, in download
return response.download(request, db)
File "/home/www-data/web2py/gluon/globals.py", line 407, in download
(filename, stream) = field.retrieve(name,nameonly=True)
File "/home/www-data/web2py/gluon/dal.py", line 9332, in retrieve
raise TypeError('Can\'t retrieve %s' % name)
TypeError: Can't retrieve auth_user.thumb.a7433c1cbe652f44.jpg
我不确定这是错的。
这是我的控制器
def make_thumb(table, image_id, size=(250, 250)):
import os
from PIL import Image
this_image = table(image_id)
im = Image.open(os.path.join(request.folder, 'uploads', this_image.avatar))
im.thumbnail(size, Image.ANTIALIAS)
thumb= 'auth_user.thumb.%s.jpg' % this_image.avatar.split('.')[2]
im.save(os.path.join(request.folder, 'uploads', thumb), 'jpeg')
this_image.update_record(thumb=thumb
)
我以为我在片中失去了一些东西,但我改为3,我似乎仍然想念b16部分。不确定为什么?
答案 0 :(得分:1)
auth_user.thumb.a7433c1cbe652f44.jpg
不是上传文件的正确格式。它缺少b16encode的原始文件名,它应该在文件扩展名之前。它看起来应该是这样的:auth_user.thumb.a7433c1cbe652f44.6d79207468756d626e61696c.jpg
。
如果this是您正在使用的食谱,请尝试更改:
thumbnail = 'document.thumbnail.%s.jpg' % this_image.filename.split('.')[2]
为:
thumbnail = 'document.thumbnail.%s.%s.jpg' % tuple(this_image.filename.split('.')[2:4])