我正在使用Java URL和URLConnection类使用FTP将文件上传到服务器。我不需要做任何事情,只需上传文件,所以我想避免任何外部库,我担心使用不支持的sun.net.ftp类。
有没有办法在FTP连接字符串中使用绝对路径?我想将我的文件放在“/ ftptransfers / ...”之类的文件中,但FTP路径是相对于用户主目录的。
示例上传代码:
URL url = new URL("ftp://username:password@host/file.txt");
URLConnection uc = url.openConnection();
uc.setDoOutput(true);
OutputStream out = uc.getOutputStream() ;
out.write("THIS DATA WILL BE WRITTEN TO FILE".getBytes());
out.close();
答案 0 :(得分:7)
我确实发现有一种半标准的方法可以帮助我。
简答:用“%2F”替换前导斜杠
答案很长:根据"A FTP URL Format"文件:
例如,网址“ftp://myname@host.dom/%2Fetc/motd”是 通过FTP解析为“host.dom”,以“myname”身份登录 (如果要求输入密码,则提示输入密码),然后执行 “CWD / etc”然后“RETR motd”。
这有不同的含义 “ftp://myname@host.dom/etc/motd”哪个“CWD等”然后 “RETR motd”;初始“CWD”可能相对于。执行 “myname”的默认目录。
另一方面, “ftp://myname@host.dom//etc/motd”,将“CWD”带为null 参数,然后是“CWD等”,然后是“RETR motd”。
答案 1 :(得分:1)
我认为最好的办法是使用apache commons FTP组件,并在建立连接后执行'cd'。
你总是可以写一个包装器,这样如果你愿意,可以用上面的格式指定URL。
-ace