立即注册
查看: 1352|回复: 0

[MTK软件经验分享] 进入浏览器,下载A图片,再下载B图片时,提示"该文件已存在,是否覆盖"

已绑定手机
发表于 2019-5-23 11:21:18 来自手机 | 显示全部楼层 |阅读模式 来自 广东省
进入浏览器,下载一图片后,再下载其他图片时,提示,“该文件已存在,是否覆盖”(Server提供不规范的下载pic url导致)
详细问题描述:
1、 例如登录百度网页,进入图片库,选择一个图片打开,长按该图片调出选项菜单,选择“保存
图片”进行图片下载;
2、 再切换到下一张图片,长按该图片调出选项菜单,选择“保存图片”进行图片下载进行图片下
载。
Result:有时会提示“该文件已存在,是否覆盖”。

[Cause]
当长按下载时,不会有图片的任何信息,只有图片的url,所以此时下载,只会根据url来获取文件名。
这里,具体解析url获取文件名的方法是在
alps/packages/apps/Browser/src/com/Android/browser/downloadHandler.java的
onDownloadStartNoStream()方法,String filename = URLUtil.guessFileName(url,
contentDisposition, mimetype);
而此方法具体在Framework,可以自己看下,Google默认会过滤掉url中'?'后面的条件匹配字符。
举例如下(分析登录百度网页下载图片的LOG):
baidu server 提供规范的下载pic url :
03-22 18:26:09.680 682 2335 I DownloadManager: Initiating request for
download 3,currentThread id: 86
03-22 18:26:09.895 682 2335 V DownloadManager: writing
http://t1.baidu.com/it/u=353759805,906057158&fm=19&gp=0.jpg to
/storage/sdcard0/Download/u=353759805,906057158&fm=19&gp=0.jpg
03-22 18:26:33.148 682 2406 I DownloadManager: Initiating request for
download 5,currentThread id: 107
03-22 18:26:33.327 682 2406 V DownloadManager: writing
http://t3.baidu.com/it/u=4274691656,2158184984&fm=19&gp=0.jpg to
/storage/sdcard0/Download/u=4274691656,2158184984&fm=19&gp=0.jpg
前两次下载时server pic url 分别是:
http://t1.baidu.com/it/u=353759805,906057158&fm=19&gp=0.jpg
http://t3.baidu.com/it/u=4274691656,2158184984&fm=19&gp=0.jpg
Webkit 解析出的file name 依次是:
u=353759805,906057158&fm=19&gp=0.jpg
u=4274691656,2158184984&fm=19&gp=0.jpg
--file name不一样,所以没有弹出"file already exist" alertdialog.
baidu server 提供不规范的下载pic url
03-22 18:27:12.966 682 2470 I DownloadManager: Initiating request for
download 6,currentThread id: 122
03-22 18:27:13.153 682 2470 V DownloadManager: writing
http://timg01.baidu-
1img.cn/timg?imagewise_list&size=b320_416&quality=&sec=1363948009&di=40619
f0d8cfa78ad91101ddd90c7a710&src=http%3A%2F%2Ft1.baidu.com%2Fit%2Fu%3D39398
26691%2C356014008%26fm%3D17 to /storage/sdcard0/Download/timg.jpeg
03-22 18:27:36.874 682 2512 I DownloadManager: Initiating request for
download 7,currentThread id: 136
03-22 18:27:37.090 682 2512 V DownloadManager: writing
http://timg01.baidu-
1img.cn/timg?imagewise_list&size=b320_416&quality=&sec=1363948009&di=3c157
b65a5fea9c32165e38cbdf13ee3&src=http%3A%2F%2Ft1.baidu.com%2Fit%2Fu%3D12894
46258%2C3952876324%26fm%3D17 to /storage/sdcard0/Download/timg.jpeg
最后两次下载时,server pic url分别是:
http://timg01.baidu-
1img.cn/timg?imagewise_list&size=b320_416&quality=&sec=1363948009&di=40619
f0d8cfa78ad91101ddd90c7a710&src=http%3A%2F%2Ft1.baidu.com%2Fit%2Fu%3D39398
26691%2C356014008%26fm%3D17
http://timg01.baidu-
1img.cn/timg?imagewise_list&size=b320_416&quality=&sec=1363948009&di=3c157
b65a5fea9c32165e38cbdf13ee3&src=http%3A%2F%2Ft1.baidu.com%2Fit%2Fu%3D12894
46258%2C3952876324%26fm%3D17
webkit 解析filename时却掉了?后面的query string,得到的filename 分别是:
timg.jpeg
timg.jpeg
得到的file name 是一样的,所以按照cu feature, 弹出"file already exsit " alert
dialog.
--综上所述:root cause是baidu server 提供的下载pic url 不规范导致
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

合作/建议

TEL: 19168984579

工作时间:
周一到周五 9:00-11:30 13:30-19:30
  • 扫一扫关注公众号
  • 扫一扫打开小程序
Copyright © 2013-2024 一牛网 版权所有 All Rights Reserved. 帮助中心|隐私声明|联系我们|手机版|粤ICP备13053961号|营业执照|EDI证
在本版发帖搜索
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表