FTP参数设置
需要使用FtpOption
设置参数。
FtpOption ftpOption = new FtpOption();
一、登陆注册
使用FtpOption
中的login()
进行登陆。
ftpOption.login("user", "pw");
long taskId = Aria.download(this)
.loadFtp(mTaskId)
.option(ftpOption)
.create();
二、FTPS
使用FtpOption
可以设置证书相关信息。
ftpOption.setProtocol(); 设置协议类型
.setStorePath(storePath) // 设置证书路径
.setStorePass(storePass) // 设置证书密码
.setAlias(alias) // 设置证书别名
Aria.download(this)
.loadFtp(mTaskId)
.option(ftpOption)
.resume();
FTPS常见错误:
450 TLS session of data connection has not resumed or the session does not match the control connection
错误 请尝试关闭P
通道的文件传输TLS验证,如下:521 PROT required error
检查url的端口是否是服务器FTPS指定的端口
在服务器中强制设置强制FTPS登录
三、主动模式
有的时候,你可能需要使用使用主动模式进行文件传输。 开启主动模式:
option.setConnectionMode(FtpConnectionMode.DATA_CONNECTION_MODE_ACTIVITY);
设置端口范围(非必须):
option.setActivePortRange(minPort, maxPort);
设置可被ftp服务器访问的本机ip(非必须):
option.setActiveExternalIPAddress(ip);
四、下载过程无法读取文件地址
4.1 服务器标志导致
如果出现文件早不到的情况,请尝试设置服务器标志,默认使用SYST_UNIX
,如果是windows自带的ftp服务器,请使用SYST_NT
标志
setServerIdentifier(FtpOption.FTPServerIdentifier.x)
4.2 日期时间格式导致
如果是时间格式导致的无法识别文件,请尝试设置下面两个方法:
如setDefaultDateFormatStr("d MMM yyyy")
或setRecentDateFormatStr("d MMM HH:mm")
// 默认的日期格式
setDefaultDateFormatStr(timeFormat)
// 修改日期的格式
setRecentDateFormatStr(timeFormat)
4.3 服务器语言设置
如:en, cn
setServerLanguageCode(code)
4.4 时区设置
如:America/Chicago or Asia/Rangoon
参考 TimeZone
setServerTimeZoneId(serverTimeZoneId)
主动模式常见问题: 主动模式:传输文件时,客户端随机开启一个端口,ftp服务器连接到客户端的该端口,ftp服务器推送数据到客户端。
Can't open data connection for transfer of xxxxx
检查ftp服务器是否能访问手机ip
检查ftp服务器的防火墙配置
五、常见错误
550 Home directory does not exist 原因:ftp服务器的存放文件的目录不存在