我无法使用在pat
中包含空格的URLConnection从FTP服务器下载文件String s = "ftp://username:password@ftpclient:21/AAB BBC/hhhh 0001.jpg";
网址u =新网址; URLConnection uc = u.openConnection(); BufferedOutputStream bos = new BufferedOutputStream(uc.getOutputStream());
不要使用FTP客户端解决方案。
使用URLencoder获取550错误文件。
谢谢, 拉夫
答案 0 :(得分:0)
您使用的是Apache commons Library吗?如果是这样,请使用此代码
try {
FileOutputStream desFileStream = new FileOutputStream(desFilePath);;
status = FTP_object.retrieveFile(srcFilePath, desFileStream);
desFileStream.close();
return status;
} catch (Exception e) {
Log.d(TAG, "download failed");
}
答案 1 :(得分:0)
根据RFC1738部分,您的网址本身不应包含空格2.2通过网址编码方法对其进行编码:
String s = "ftp://username:password@ftpclient:21/AAB BBC/hhhh 0001.jpg";
String encodedUrl = URLEncoder.encode(s,"UTF-8");
我意识到你说你已经在进行编码,但是它返回了550错误。我没有看到编码,所以我只是提到它应该是需要的。
我真的会从浏览器中尝试这个,看看你是否可以实现它。我也会转储它正在使用的URL并从浏览器中尝试(或者wget,curl,无论你有什么方便)。 550被列为“权限”问题,而不是找不到文件,所以我对此感到有些惊讶,但这可能是短代码并且出现错误以防止人们在测试用户/密码组合。很难说。
我遇到的另一个问题是你提到你不想要客户端解决方案,但你似乎在编写客户端而不是服务器。您将转到端口21,这是服务器的默认FTP端口。
我会尝试各种编码组合,看看你是否编码所有内容......你应该编码url路径。密码中是否有任何时髦的字符?
直接从浏览器进行测试可以为您提供很多见解。