我的用户可以上传自己的图片并将其用作头像。现在,如果他们没有自己上传图像,我正在努力检索如何检索默认的后备图像。
头像的路径是“//mysite.com/avatar/username”。
到目前为止,我有这段代码,当用户自己上传了一个头像时,它可以正常工作,但是当我尝试检索默认图片时,它会给我以下错误:
引发IOError(错误.EACCES,'文件无法访问',文件名)
IOError:[Errno 13]文件无法访问:'/ Users / myuser / Documents / github / mysys / static / images / profile.png'
def get(self):
path = self.request.path.split('/')
action = self.get_action(path)
if action:
e = employees.filter('username = ', action).get()
if e.avatar:
self.response.headers['Content-Type'] = "image/png"
self.response.out.write(e.avatar)
else:
self.response.headers['Content-Type'] = 'image/png'
path = os.path.join(os.path.split(__file__)[0], 'static/images/profile.png')
with open(path, 'r') as f:
print self.response.out.write(f.read())
我在我的app.yaml中将“/ static”文件夹定义为static_dir。
我知道我可以将profile.png放在根文件夹中,但我更喜欢将它放在“/ static / images”文件夹中。
有什么想法吗?
答案 0 :(得分:0)
如果您将文件本身声明为static_file
或其目录或其文件路径中的任何目录,则在您的应用/服务的static_dir
配置文件中.yaml
,然后按默认情况下,应用程序代码无法访问它。
您还需要将其配置为application_readable
。来自Handlers element:
application_readable
可选。布尔。默认情况下,在静态文件处理程序中声明的文件 作为静态数据上传,仅供最终用户使用。他们 应用程序无法读取。如果此字段设置为true,则 文件也作为代码数据上传,以便您的应用程序可以阅读 他们。这两个上传都是根据您的代码和静态数据收取的 存储resource quotas。