0

通常 Web2py 错误很容易理解,但这让我很困惑。

我使用了 web2py 食谱中的一个示例来制作上传图像的缩略图。它会生成一个缩略图,但我无法检索该文件。我收到以下错误:

<type 'exceptions.TypeError'>(Can't retrieve auth_user.thumb.a7433c1cbe652f44.jpg)

该文件位于上传目录中,可以使用图像查看器查看,但我无法从数据库中调用它。从数据库管理员或通过视图。

这是我单击数据库管理员中的链接时的回溯。

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 部分。不知道为什么?

4

1 回答 1

1

auth_user.thumb.a7433c1cbe652f44.jpg不是上传文件的正确格式。它缺少 b16encode 的原始文件名,它应该在文件扩展名之前。它应该看起来像这样:auth_user.thumb.a7433c1cbe652f44.6d79207468756d626e61696c.jpg.

如果是您正在使用的配方,请尝试更改:

thumbnail = 'document.thumbnail.%s.jpg' % this_image.filename.split('.')[2]

至:

thumbnail = 'document.thumbnail.%s.%s.jpg' % tuple(this_image.filename.split('.')[2:4])
于 2013-04-29T03:57:15.070 回答