微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 下载A图片,再下载B图片时,提示“该文件已存在,是否覆盖”(Server提供不规...

下载A图片,再下载B图片时,提示“该文件已存在,是否覆盖”(Server提供不规...

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]

进入浏览器,下载一图片后,再下载其他图片时,提示,“该文件已存在,是否覆盖”
详细问题描述:
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);
而此方法具体在php?mod=tag&id=6090" target="_blank" class="relatedlink">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 不规范导致

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top