请问大神们,在做微信开发的时候,有的安卓上传不了图片怎么破?

2016-04-15 11:16:42 +08:00
 zic
在做一个小功能,类似去年挺火的「足迹」(还是「足记」?)的那种,你可以上传一张照片,然后服务端给加一些文字,只不过是通过微信完成的。

有没有人才做微信开发的时候,遇到过类似情况:就是有些安卓机,如果图片是在 SD 卡里的,就上传不了。。。

请教大神们,这个怎么破?🙏🙏🙏
7270 次点击
所在节点    Android
12 条回复
abc123ccc
2016-04-15 12:55:09 +08:00
这个和安桌系统有关的, 4.4 及以上版本,选择图片后, H5 FORM 上传的图片是没有文件名后缀的,扯蛋吧。我认为是安桌 APP 没有给我配置好,还和他们吵,最后我抓包对比,发现了这个问题,最后安桌的同事说,我杂知道安桌系统这么坑人呢。妈蛋,赞钱买苹果手机去。苦逼呀,我现在还在用山寨手机呢。
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
lyhapple
2016-04-15 14:38:04 +08:00
幸好我记了笔记,不然我自己又会忘了是怎么解决的了
zic
2016-04-15 14:40:25 +08:00
@lyhapple 哇,感谢,我试试
其实我描述反了,是 sd 卡里的可以上传,手机内存里的传不了
总之是有问题,我用你的方法试试
crayygy
2016-04-15 15:27:44 +08:00
@lyhapple 哈哈,这个习惯真是好,不知道你用什么纪录的?
wjfz
2016-04-15 15:42:58 +08:00
用微信自己的 JSSDK 啊。
maelon
2016-04-15 15:45:25 +08:00
前段时间也遇到过这个问题,然后自己写了这个东西 https://github.com/maelon/jIMGCompress.git ,原理是读取二进制文件,判断文件头,然后可以拿到文件类型
subpo
2016-04-15 15:47:29 +08:00
用微信 sdk 不行吗?
maelon
2016-04-15 15:50:06 +08:00
如果业务只是针对微信,当然可以微信 sdk ,但是要求后端去下载图片,这中间交互比较麻烦 @subpo
maelon
2016-04-15 15:53:32 +08:00
@lyhapple 我也测了很多设备,发现就是微信的问题,跟 android4 估计关系不大,微信有可能是 app 处理的时候有问题。顺便吐槽下 android 微信内嵌腾迅 qq x5 内核,真恶心
lyhapple
2016-04-16 11:09:38 +08:00
@crayygy 用的笔记类软件啊, 为知笔记
shineMicroxy
2016-04-17 09:54:05 +08:00
如果是 Android M 一定要另外申请读写权限,光配置 Manifest 的 permission 还不够

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/271263

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX