lyhapple
2016-04-15 14:37:30 +08:00
哈哈爽了, 这玩意我当时也折腾了好几天。后来发现和 android4.4 有关,直接贴给你解决方案,
起因:
在微信端 HTML5 上传文件时发现文件无法上传。
原因:
是安卓 4.4 的 bug , 安卓 5 以上无此问题, 不能错怪微信
解决:
使用百度团队开发的 webuploder 组件(ajax, html5, flash 上传解决方案)
必须给 webuploder 初始化配置时设置 sendAsBinary 为 True
后端 python 代码也需要接收二进制数据,与以往的写法不同, 主要区别是直接读取 request.body 的内容
def handle_uploaded_binary_file(name, request_body, save_dir):
try:
if not os.path.exists(save_dir):
os.makedirs(save_dir)
ext = get_file_ext_name(name)
filename = "%s.%s" % (uuid.uuid4(), ext)
full_path = os.path.join(save_dir, filename)
f = open(full_path, 'wb')
f.write(request_body)
f.close()
except Exception, e:
logger.exception(e)
full_path = ''
return full_path