java - relativos - ¿Alguna forma de especificar rutas absolutas en URL FTP?
url relativos y absolutos (2)
Estoy usando las clases Java URL y URLConnection para cargar un archivo a un servidor usando FTP. No necesito hacer nada más que simplemente cargar el archivo, por lo que me gustaría evitar cualquier biblioteca externa y soy cauteloso al usar la clase sun.net.ftp no admitida.
¿Hay alguna forma de utilizar rutas absolutas en la cadena de conexión FTP? Me gustaría poner mis archivos en algo así como "/ ftptransfers / ..." pero la ruta de FTP es relativa al directorio de inicio del usuario.
Código de carga de muestra:
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();
Creo que su mejor opción es usar el componente FTP de apache commons y hacer un ''cd'' después de hacer la conexión.
siempre puede escribir un contenedor para que la URL se pueda especificar en el formato anterior si lo desea.
-as
De hecho, descubrí que hay una forma semi estándar de hacerlo que funcionó para mí.
Respuesta corta: reemplace la barra inicial con "% 2F"
Respuesta larga: según el documento "A FTP URL Format" :
Por ejemplo, la URL " ftp: //[email protected]/%2Fetc/motd " se interpreta mediante FTP-ing a "host.dom", iniciando sesión como "myname" (solicitando una contraseña si se solicita). ), y luego ejecutar "CWD / etc" y luego "RETR motd".
Esto tiene un significado diferente de " ftp: //[email protected]/etc/motd " que sería "CWD, etc." y luego "RETR motd"; la "CWD" inicial se puede ejecutar en relación con el directorio predeterminado para "myname".
Por otro lado, " ftp: //[email protected]//etc/motd ", sería "CWD" con un argumento nulo, luego "CWD, etc.", y luego "RETR motd".