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

原创 2017年04月14日 17:23:23

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

这里写图片描述

版权声明:本文为【欧阳鹏】原创文章,欢迎转载,转载请注明出处! 【http://blog.csdn.net/ouyang_peng】

相关文章推荐

解决ftp下载文件名乱码问题

原来用的是sun.net.ftp.FtpClient jar包,在java project中能解决乱码问题,在java web项目中未找到解决方案 现在改用org.apache.commons....

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

目录名前提D盘里,Program Files目录下有个hello.exe,正确运行时输出“Hello world!”。 当没有任何处理时,命令被空格截断。D:\>d:/Program Files/h...

ftp的get命令

一、ftp的get命令和mget命令有何不同? get一次只下载一个文件;mget一次可以下载多个文件,而且支持通配符,需要注意的是在mget的时侯,需要对每一个文件都选择y/n,如果想不交互的下载...
  • kokodudu
  • kokodudu
  • 2015年09月19日 11:09
  • 10105

关于JAVA读取远程文件,文件地址带有空格,%百分号时报空指针问题

InputStream inStream =null; // 连接指定的网络资源,获取网络输入流 这里要进行转换,要不然就会在下面getInputStream()时报错空指针的错误 ftpUrl=...
  • zhq426
  • zhq426
  • 2013年03月07日 10:05
  • 2400

下载的空格变成+, 括号变成乱码-------处理文件名包含%20 不转换成空格

如果下载的文件名称包括空格、(、)、;、@、#、&、,逗号  String newName = URLEncoder.encode(name, "UTF-8").replaceAll("\\+", ...

关于iOS中的文件打散与使用FTP上传(伪断点续传大文件)

因为最近要写一个项目,里面考虑到网络的问题,而目前

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

使用response.setHeader(“Content-Disposition”,”attachment;filename=”+fName)下载文件, 中文文件名无法显示的问题及空格处理**该问...

在windows上创建文件名以“.”开头的文件

在实际项目开发中,我们会经常遇到以”.”开头的配置文件。例如我们如果需要通过配置文件给npm更换源就需要更改.npmrc文件,然而还有很多友友还不清楚如何创建一个类似的文件,今天就和大家分享下这个小技...

安卓+tomcat实现文件下载时文件名不能有中文和空格的解决方案

本人刚开始学安卓不久,最近要实现安卓根据url从服务器中下载文件的功能,服务器用的是开源的Tomcat服务器。刚开始时很容易的能够实现全英文名称的文件的下载,比如"WestLife_mylove.mp...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:一次因为文件名开头包含空格而导致FTP文件一直无法下载的悲剧!
举报原因:
原因补充:

(最多只允许输入30个字)