关闭

一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!

1621人阅读 评论(0) 收藏 举报
分类:

最近负责公司研究新的多渠道打包方案,之前的打包方案太慢了,因此采用了美团Android Signature V2 Scheme签名下的新一代渠道包打包神器 方案进行了多渠道打包。但是由于马虎,在配置多渠道打包定制渠道包的APK的文件名称的时候,在apk文件名称签名多敲了一个空格,因此出出现了FTP文件一直无法下载的悲剧,下面具体描述一下。

在Jenkins成功的时候多渠道包之后,会转移编译好的apk到FTP服务器,如下图所示,Jenkins第557次编译成功后的产物转移到FTP服务器之后,如下所示:

这里写图片描述

这个时候,用火狐浏览器去点击相应的apk进行下载可以正常下载下来,例如我们就下载XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk到桌面,如下所示:
这里写图片描述

链接为:

project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/%20XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

成功下载到桌面之后,如下所示:
这里写图片描述
特别注意上图中的文件名,发现在XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk字符串之前还有一个空格,之前我一直忽略了。

然后我提测给测试人员,测试人员没有安装火狐浏览器,使用的是Google Chrome浏览器,然后一直无法下载下来。我们自己用Google Chrome浏览器来复现一下,如下所示:
这里写图片描述

我们也下载XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk到桌面,点击链接,直接提示无法访问此网站,如下所示:
这里写图片描述

可以发现链接为:

/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

对比一下之前的火狐浏览器的请求

FireFox 浏览器点击请求的链接
/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/%20XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

Google Chrome浏览器点击请求的链接
/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

这里写图片描述

我还不信邪了,我又去使用XFTP下载该apk,发现也是报错,如下图所示:
这里写图片描述

我又换了CuteFTP软件下载该apk,发现可以正常下载,如下图所示:
这里写图片描述

点击查看刚刚的下载任务属性,发现下载路径有空格符,如下图所示:
这里写图片描述

下面是XFTP和CuteFTP请求的链接对比

XTFP的请求链接
/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

CuteFTP的请求链接
/project/Android/Common/App_Android_Trunk/2017-04-14-00-40-55-svn-19462-build-557/ XTCWatch_v3.6.0.App_Android_Trunk_557_imoo.apk

这里写图片描述

因此可以总结原因就是:

FireFox浏览器和CuteFTP保持FTP服务器上的文件原版路径不改变,因此可以正常下载下来。
而Google Chrome浏览器和XFTP软件,自作聪明的将FTP服务器上的文件的文件名中的空格符去掉了,导致下载请求链接时,链接并不存在,所以无法下载。

手贱,增加了空格符的groovy脚本语言如下所示:

walle {
    // 指定渠道包的输出路径
    apkOutputFolder = new File("${project.buildDir}/outputs/channels");
    // 定制渠道包的APK的文件名称
    apkFileNameFormat = ' XTCWatch_'+'v${versionName}_${channel}.apk';
    // 渠道配置文件
    channelFile = new File("${project.getProjectDir()}/channel")

这里写图片描述

通过一段时间查找原因,终于找到了是因为文件名加了一个空格符导致无法下载的问题后,修复的groovy脚本语言如下所示:

walle {
    // 指定渠道包的输出路径
    apkOutputFolder = new File("${project.buildDir}/outputs/channels");
    // 定制渠道包的APK的文件名称
    apkFileNameFormat = 'XTCWatch_'+'v${versionName}_${channel}.apk';
    // 渠道配置文件
    channelFile = new File("${project.getProjectDir()}/channel")
}

这里写图片描述

提交代码,重新Jenkins编译之后,再次用Google Chrome浏览器和XFTP下载多渠道包apk,正常,如下所示:
这里写图片描述

点击链接下载的话,可以正常下载,如下所示:
这里写图片描述

使用XFTP也可以正常下载,如下所示:
这里写图片描述


这里写图片描述

作者:欧阳鹏 欢迎转载,与人分享是进步的源泉!
转载请保留原文地址:http://blog.csdn.net/ouyang_peng/article/details/70174497
如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。

这里写图片描述

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java 解决采集UTF-8网页空格变成问号乱码

昨天发现,用 HtmlDecode() 去解码后,“ ”不是被解码为半角的空格(ASCII码0x20)而是变成半角问号“?”(ASCII码0x3F)。而且奇怪的是,只有每行前面的空格才会出问题,如果前面后面有汉字的话,空格就还是空格。但是更加奇怪的是,如果直接在HtmlDecode...
  • bob007
  • bob007
  • 2014-05-26 17:43
  • 10113

Android 关于带有中文字样以及空格文件名的文件上传及下载

昨天闲来没事,做了一些文件的上传和下载,博主这里用的上传以及下载框架名为:xutils3,想必有些人也用过。当然,这个框架正常的上传和下载都是OK的,但是我发现,在遇到文件名带有中文字样和空格的文件的时候,就会出现错误如下: 这是我下载文件的时候框架抛出的错误。后来百度了一下,说是需要进行urlen...
  • L_xiaole
  • L_xiaole
  • 2016-08-11 11:48
  • 614

下载文件名空格变加号、乱码、被截断问题解决

用java写了一个下载文件的类,旨在用浏览器下载服务端文件,却发现下载时,出现文件名空格变加号、乱码、被截断问题解决
  • u014650759
  • u014650759
  • 2017-08-17 16:41
  • 1040

java 读取文件路径空格、“+”和中文的处理

有时候在java代码中读取文件,如果文件所在路径包含空格、”+“号或者是中文的时候,由于这些特殊的字符会被进行编码转译,所以就会报没有发现文件的错误,那么遇到这种错误,我们就要把编码过后的路径进行解码,这样才能正确的找到文件。主要的解决方法有一下三种方法:解决方法 1、替换法 比如文件路...
  • LZJLZJLZJLZJLZJLZJ
  • LZJLZJLZJLZJLZJLZJ
  • 2017-03-18 12:50
  • 1472

文件下载,文件名有中文及空格无法显示问题

使用response.setHeader(“Content-Disposition”,”attachment;filename=”+fName)下载文件, 中文文件名无法显示的问题及空格处理**该问题解决重点在于这两句代码**//处理文件名有中文问题 String file_name = new ...
  • zhoumengshun
  • zhoumengshun
  • 2017-06-05 13:04
  • 1019

SHELL技巧:处理文件名中的那些空格

现在很多人命名的时候都喜欢用空格,例如“An Introduction.doc”。但是这种命名方式给Linux命令行工具和Shell带来了困扰,因为大多数命令中,都是默认以空格做为值与值之间的分隔符,而不是做为文件名的一部分。   看下面的脚本,我们可以了解的更清楚:   ...
  • dearwind153
  • dearwind153
  • 2016-08-04 14:31
  • 1966

svn检查文件名中是否有空格

目标:防止提交的文件名有空格 同样的通过awk来处理主要逻辑,需要编辑pre-commit.bat :://////////////////////////////////////////////////////////////////////////////////////////...
  • cleanfield
  • cleanfield
  • 2016-06-03 12:46
  • 1269

C#关联程序的文件路径中存在空格的问题解决

今天测试的时候无意间发现,打开通过写注册表关联了程序的文件,如果文件名中存在空格,则无法通过双击打开。 经测试发现,原来是在Main方法入口点传入的参数为string[] 类型,当传入带空格的路径时,会被分解成多个字符串存入string[] 数组中。由于Main的参数由注册表关联后直接传入的,所以...
  • BeiLinYu
  • BeiLinYu
  • 2015-03-28 19:22
  • 1563

Windows路径含有带空格的目录/文件名的处理

目录名前提D盘里,Program Files目录下有个hello.exe,正确运行时输出“Hello world!”。 当没有任何处理时,命令被空格截断。D:\>d:/Program Files/hello.exe 'd:/Program' 不是内部或外部命令,也不是可运行的...
  • hxiaohai
  • hxiaohai
  • 2016-01-30 21:47
  • 4090

jquery 类和标签的空格

关于jquery选择器的问题 举报|2012-05-15 21:19轻轻的影子 | 分类:JavaScript | 浏览93次 我想为a标签中类名为more的应用点击事件,于是写了 $('a .more').click(functi...
  • bingqingsuimeng
  • bingqingsuimeng
  • 2014-09-01 15:59
  • 1717
    个人资料
    • 访问:2090773次
    • 积分:22858
    • 等级:
    • 排名:第362名
    • 原创:368篇
    • 转载:110篇
    • 译文:0篇
    • 评论:972条
    感谢您为博客进行打赏
      支付宝&微信支付二维码
      支付宝&微信支付
    站长统计
    友情链接
    博客专栏
    最新评论