无法使用路径中包含空格的URLConnection从FTP服务器下载文件

时间:2013-03-19 18:42:11

标签: android urlconnection

我无法使用在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错误文件。

谢谢, 拉夫

2 个答案:

答案 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路径。密码中是否有任何时髦的字符?

直接从浏览器进行测试可以为您提供很多见解。