Red de conocimiento informático - Aprendizaje de programación - Java obtiene la ruta del archivo de lectura ftp en el navegador

Java obtiene la ruta del archivo de lectura ftp en el navegador

Pregunta, ¿estás intentando realizar cargas y descargas por ftp?

Primero debe instalar un programa de servidor ftp, iniciarlo y luego descargar un programa de cliente ftp para probar si se puede conectar. Esta parte debe probarse primero.

FTPClient;

importar org.apache.commons.net.ftp.FTPReplyFTPReply;

prueba de clase pública {

ftpClient privado;

/**

*

* @param ruta La ruta que se cargará en el servidor ftp

* @param dirección dirección

* @param puerto número de puerto

* @param nombre de usuario nombre de usuario

* @param contraseña contraseña

* @return

* @throws Excepción

*/

conexión booleana privada (ruta de cadena, dirección de cadena, puerto int, nombre de usuario de cadena, contraseña de cadena) arroja una excepción {

resultado booleano = false ;

ftp = new FTPClient();

int respuesta;

ftp.connect(dirección, puerto);

ftp.login(nombre de usuario, contraseña);

ftp.setFileType(FTPClient.BINARY_FILE_TYPE);

respuesta = ftp.getReplyCode()makeDirectory(file.getName());

ftp.changeWorkingDirectory(file.getName());

String[] archivos = file.list();

for (int i = 0; i lt ; archivos .length; i) {

Archivo archivo1 = nuevo Archivo(file.getPath() "\\" archivos[i]);

if(file1.isDirectory() ){

upload(file1);

ftp.ChangeToParentDirectory() almacena archivos (file2.getName(), entrada);

input.close() ;

}

}

}else{

Archivo archivo2 = nuevo Archivo(file.getPath());

FileInputStream entrada = new FileInputStream(file2);

ftp.storeFile(file2.getName(), entrada);

input.close();

}

}

}

public static void main(String[] args) arroja una excepción{

prueba t = nueva prueba();

t.connect("", "localhost", 21, "yhh", "yhhazr");

p>

Archivo archivo = nuevo Archivo("e:\uploadify");

t.upload(archivo);

}

}

}

2.2 Código de descarga

Aquí no se utiliza ningún filtro. Si utiliza un filtro, puede filtrar los archivos que desee.

clase pública Ftp {

/**

* @param args

*/

pública estática void main(String[] args) {

// TODO genera automáticamente códigos auxiliares de método

Ftp ftp = new Ftp();

String hostname = "www .strawberry.com";

Puerto entero = 21;

Nombre de usuario de cadena = "nombre de usuario";

Contraseña de cadena = "contraseña";

String remoto = "/c.txt";

String local = "/home/tin/LeonChen/FTP/"

prueba {

ftp.connect(nombre de host, puerto, nombre de usuario, contraseña);

System.out.println("Estado de recepción:" ftp.download(remoto, local));

ftp .disconnect();

} catch (IOException e) {

// TODO Bloque catch generado automáticamente

e.printStackTrace();

}

}

ftpClient privado ftpClient = new FTPClient();

/*

* * Conectarse a FTP ¿servidor?

* * @param nombre de host nombre de host?

* * @param puerto puerto ?

* * @param nombre de usuario ¿Nombre de usuario?

* * @param contraseña Contraseña Contraseña ?

* * @return Si la conexión fue exitosa

* * @throws IOException

*/

conexión booleana privada (nombre de host de cadena, puerto int, nombre de usuario de cadena,

Contraseña de cadena) arroja IOException {

ftpClient.connect(nombre de host, puerto

ftpClient.setControlEncoding("UTF-8"); if (FTPReply.isPositiveCompletion(ftpClient.getReplyCode())){

if (ftpClient.login(nombre de usuario, contraseña)) {

devuelve verdadero

} <

}

Desconectar();

Devuelve falso

}

/*< /

p>

* Descarga de archivos desde el servidor FTP, admite carga intermitente, informe de porcentaje de carga

*

* @param ruta remota del archivo remoto

*

* @param local ruta del archivo local

*

* @return estado de carga

*

* @ lanza IOException

*/

descarga pública DownloadStatus(String remoto, lanza IOException {

// Establece el modo pasivo

ftpClient. listFiles (new String(remote(

.getBytes("UTF-8"), "iso-8859-1"));

if (files.length != 1) {

System.out.println("El archivo remoto no existe");

return DownloadStatus.Remote_File_Noexist;

}

largo lRemoteSize = files[0].getSize();

String fildName = files[0].getName();

// El archivo existe en Descarga local de punto de interrupción

Archivo f = nuevo archivo (nombre de campo local);

if (f.exists() ){

long localSize = f. ();

if (localSize gt; = lRemoteSize) {

System.out.println("El archivo local es más grande que el archivo remoto, descarga cancelada");

return DownloadStatus.Local_Bigger_Remote;

}

// Ejecutar reanudación del punto de interrupción y registrar el estado

FileOutputStream out = new FileOutputStream(f, true);

ftpClient.setRestartOffset(f, true)setRestartOffset(localSize);

InputStream in = ftpClient.retrieveFileStream(new String(remote.getBytes("UTF-8") , "iso -8859-1");

byte[] bytes = nuevo byte[1024];

paso largo = lRemoteSize / 100;

proceso largo = localSize / paso;

int c;

mientras ((c = in.read(bytes)) ! = -1) {

salida.escribir(b

ytes, 0, c);

localSize = c;

long nowProcess = localSize/step;

if (nowProcess gt; proceso) {

proceso = nowProcess;

if (proceso 10 == 0)

System.out.println("Progreso de la descarga: " proceso);

// TODO actualiza el progreso de descarga del archivo, el valor se almacena en la variable de proceso

}

}

in.close();

out.close();

booleano isDo = ftpClient.completePendingCommand();

if (isDo) {

resultado = DownloadStatus.Download_From_Break_Success ;

} más {

resultado = DownloadStatus.Download_From_Break_Failed

}

} más {

OutputStream; salida = nuevo FileOutputStream(f);

EntradaStream in = ftpClient.RetrieveFileStream(nuevo FileOutputStream(f));