环境:WindowsXP
1、上传ico文件不认识,错误信息为:
Could not guess mimetype for images/favicon.ico. Using application/octet-stream
直接看源文件appcfg.py,发现打印出错误信息的函数是GetMimeTypeIfStaticFile,是根据mimetypes 这个模块来判断文件类型的。但mimetypes 这个模块导入的默认文件类型是在linux下的,windows下的不全,所以会导致文件判断出错。这时直接在函数里增加判断好了,见函数体中的红色部分。如果有别的媒体文件不认识,也可以如法炮制的。
def GetMimeTypeIfStaticFile(config, filename):
"""Looks up the mime type for ‘filename’.
Uses the handlers in ‘config’ to determine if the file should
be treated as a static file.
Args:
config: The app.yaml object to check the filename against.
filename: The name of the file.
Returns:
The mime type string. For example, ’text/plain’ or ‘image/gif’.
None if this is not a static file.
"""
for handler in config.handlers:
handler_type = handler.GetHandlerType()
if handler_type in ("static_dir", "static_files"):
if handler_type == "static_dir":
regex = os.path.join(re.escape(handler.GetHandler()), ".*")
else:
regex = handler.upload
if re.match(regex, filename):
if handler.mime_type is not None:
return handler.mime_type
else:
if ‘.ico’ == filename[-4:]:
guess = ‘image/x-icon’
else:
guess = mimetypes.guess_type(filename)[0]
if guess is None:
default = "application/octet-stream"
print >>sys.stderr, ("Could not guess mimetype for %s. Using %s."
% (filename, default))
return default
return guess
return None
2、上传文件,莫明其妙出错。
本来文件的path是default\templates\index.html,上传时莫明其妙变为default\templates~%index.html,其中index.html前面的乱码忘了是啥了,反正是乱码。这时也是上传不上去的。
忘了在哪里改了,反正修改思路就是在枚举文件的时侯,做了一个特殊处理,将乱码的path手工修改为正常的path名。
出现乱码的原因未知,反正前后是用了两台不同的电脑,其他的也没有什么特别的了。
函数里多用try,做好异常处理。
windows下GAE上传文件时出现的2个bug
windows下GAE上传文件时出现的2个bug
...