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

最近负责公司研究新的多渠道打包方案,之前的打包方案太慢了,因此采用了美团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
如果本文对您有所帮助,欢迎您扫码下图所示的支付宝和微信支付二维码对本文进行打赏。

时间: 2024-11-30 07:42:26

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

Linux如何查找处理文件名后包含空格的文件

Linux如何查找处理文件名后包含空格的文件   当Linux下文件名中出现空格这类特殊情况话,如何查找或确认那些文件名后有空格呢? 又怎么批量替换处理掉这些空格呢?     方法1: 输入文件名后使用Tab键,如果使用Tab键后面出现\ \ \这样的可见字符,那么该文件名包含空格.当然,这个方法弊端很大,例如,效率低下,不能批量查找,只有当你怀疑某个文件名后有空格,这个方法才比较凑效.另外,不能查找文件中间包含空格的文件名.如下测试所示:   [root@DB-Server kerry]# c

[20161029]windows 7的文件名开头空格.txt

[20161029]windows 7的文件名开头是空格的问题.txt --今天遇到windows 7的文件名开头是空格的一个bug,通过一个例子来说明: 1.建立一个文件夹aaa: 里面包含2个文件1.txt," 1.txt", --注:第2个文件前面有一个空格要使用引号.实际上在图形界面上你无法建立前面带空格的文件,至少在widows7下. --我是使用记事本编辑1.txt ,然后选择另存为打入 " 1.txt"生成的. D:\temp\aaa>dir  

Linux 下如何处理包含空格和特殊字符的文件名

我们经常会看到文件名和文件夹名.大多数时候文件/文件夹的名字和内容相关并以数字和字母开头.字母加数字的文件名最常见,应用也很广泛,但总会需要处理一些包含特殊字符的文件名/文件夹名. 注意:我们可能有各种类型的文件,但是为了简单以及方便实现,在本文中我们只用文本文件(.txt)做演示. 最常见的文件名例子: abc.txt avi.txt debian.txt ... 数字文件名例子: 121.txt 3221.txt 674659.txt ... 字母数字文件名例子: eg84235.txt 3

Shell中处理包含空格的文件名实例_linux shell

今天在处理文件时遇到个问题,当文件名包含空格时,for循环就出问题了. 例如,我在当前文件夹下建立3个文件名包含空格的文件: 复制代码 代码如下: keakons-MacBook-Pro:test keakon$ touch "test 1"keakons-MacBook-Pro:test keakon$ touch "test 2"keakons-MacBook-Pro:test keakon$ touch "test 3"keakons-Ma

HTML文件名前加空格,在网络上打不开了

问题描述 ftp://218.85.133.25/product/Infusion%20chair/%20gangzhishuyeyi-yy-713.html用FTP能打开就打不开了http://www.kai-xuan.com.cn/product/Infusion%20chair/%20gangzhishuyeyi-yy-713.html文件名前面是加了空格的/%20gangzhishuyeyi-yy-713.html/gangzhishuyeyi-yy-713.html如何才能在浏览器打开

Inet控件中上载的路径、文件名中出现空格的解决办法

在VB中调用Inet控件时当本地的文件路径,或文件名里面出现空格时则相应的文件便上传不到服务器,会发生错误,那么怎么解决呢? 其实办法很简单:在该路径或文件名两边加双引号就行了. 例子如下: Inet1.Execute txtURL.Text, "PUT ""C:\My Documents\Send.txt"" SentDocs\Sent.txt". 其中本地文件名为:C:\My Documents\Send.txt,要在两端加双引号.为什么要写

迅雷文件名中包含违规内容怎么破解?

  迅雷文件名中包含违规内容怎么破解?当迅雷下载提示文件中包含违规内容,无法添加到高速通道和离线空间的时候,我们还是有解决办法的.以前可以通过更改文件名方式来解决,现在已被查封,那么我们就换种方法. 1.在迅雷中右键点击所下载文件/种子均可,点击[复制磁力链接] 2.下载载115浏览器并安装 3.使用115浏览器输入http://www.115.com,并登陆(如果没有帐号,需要先注册).如果是115网盘会员可使用任意浏览器打开,非会员请用115浏览器打开. 4.点击文件 5.点击离线下载-->

Qt 从TextEdit中读取一行字符串(包含空格)

问题描述 Qt 从TextEdit中读取一行字符串(包含空格) 我之前是从文件中直接使用getline直接读取的,现在想从TextEdit中读取,应该怎么写? 要和getline一个效果的 解决方案 QStringList Str_List = 文本框->getText()->split( " " ) ; 第n行 = Str_List[n - 1] ;

文件名带空格-svn 设置文件名中带空格的文件权限不起作用

问题描述 svn 设置文件名中带空格的文件权限不起作用 现象:文件名中带空格,在svn中设置权限后不起作用,去掉空格后权限起作用 期望:文件名中想留着空格,还想让权限起作用,请明白人给个办法,谢谢.