0

我无法使用在 pat 中有空格的 URLConnection 从 FTP 服务器下载文件

String s = "ftp://username:password@ftpclient:21/AAB BBC/hhhh 0001.jpg";

URL u = 新 URL;URLConnection uc = u.openConnection(); BufferedOutputStream bos = new BufferedOutputStream(uc.getOutputStream());

不想要 FTP 客户端解决方案。

使用 URLencoder 获取 550 错误文件未找到。

谢谢,高拉夫

4

2 回答 2

0

根据RFC1738第 2.2 节,您的 URL 本身不应该有空格通过 URL Encode 方法运行以对其进行编码:

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

直接从浏览器进行测试会给你很多洞察力。

于 2013-03-19T19:54:17.963 回答
0

您在使用 Apache 公共库吗?如果是这样,请使用此代码

try {
    FileOutputStream desFileStream = new FileOutputStream(desFilePath);;
    status = FTP_object.retrieveFile(srcFilePath, desFileStream);
    desFileStream.close();

    return status;
} catch (Exception e) {
    Log.d(TAG, "download failed");
}
于 2013-03-19T19:03:02.863 回答