我正在使用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();
Run Code Online (Sandbox Code Playgroud)
我确实发现有一种半标准的方式可以帮助我.
简短回答:用"%2F"替换前导斜杠
答案很长:根据"A FTP URL格式"文档:
例如,URL" ftp://myname@host.dom/%2Fetc/motd "通过FTP解析为"host.dom",以"myname"身份登录(如果要求输入密码则提示输入密码) ),然后执行"CWD/etc"然后执行"RETR motd".
这与" ftp://myname@host.dom/etc/motd " 有不同的含义,即"CWD等",然后是"RETR motd"; 可以相对于"myname"的默认目录执行初始"CWD".
另一方面," ftp://myname@host.dom//etc/motd ",将"CWD"带有空参数,然后是"CWD etc",然后是"RETR motd".