# File upload mit ftp



## Java2k5 (17. Okt 2005)

Hi @all,

ich habe folgende Problemstellung:

ich hab aus einer lokalen Datenbank eine XML File exportiert.
Diese XML File will ich nun per Internet Verbindung (wenn möglich ftp) auf einen anderen Server hochladen und in die xindice xml-database (http://xml.apache.org/xindice) schreiben.

Habt ihr da eine Idee wie ich das am besten anstellen kann?
Wie lade ich eine File (XML Datei) auf einen anderen Server?


Grüße Java2k5


----------



## m@nu (17. Okt 2005)

vom jakarta projekt gibts in den net-commons eine library für das ftp-protokoll...
:arrow: http://jakarta.apache.org/commons/net/


----------



## Java2k5 (17. Okt 2005)

Im Moment bin ich so weit aber ich bekomm immernoch eine Exception als Ausgabe:


java.net.UnknownHostException: ftp://servernname
!!!Die angegebenen Serverdaten sind ungültig
java.lang.NullPointerException
!!!Fehler beim schließen der Verbindung!!!

Kann des ein, das meine firewall einfach den ftp port blockt und ich deshalb nicht raus komme?



mein code looks like that:
(Servername, Username und Passwort abgeändert)



```
import ftp.*;
import java.io.*;
import java.net.*;

/************************************************************************************
 * This is an FTP program and an example of using FtpBean.
 * 
 * Program Description:
 * It connects to a ftp server.
 * Go to a directory.
 * Then list its content with help of the FtpListResult class.
 * Finally, it gets a binary file. 
 * In the downloading progress, it tells how many bytes are being downloaded.
 *
 * Note that this class implements the FtpObserver interface, which
 * make this class have the ability to monitor the downloading or 
 * uploading progress.
 * If you don't need to monitor it, then you don't need to implement this interface.
 ***********************************************************************************/



class FtpProg implements FtpObserver
{

	//Variablen Deklaration
    FtpBean ftp;
    long num_of_bytes = 0;




// Main
    public static void main(String[] args) throws Exception
    { 
       System.out.println("********************************************************************************");
       System.out.println("FTP Programm Version 1.0 beta");
       System.out.println();       
       System.out.println("********************************************************************************");
       System.out.println();
       System.out.println();
       System.out.println();
                             
     FtpProg myFtpProg = new FtpProg();      
     myFtpProg.connect();
     //ftp.listDirectory();
     //ftp.getFile();
     myFtpProg.close();
     	 	   
       System.out.println(); 	   
       System.out.println();	 	       
       System.out.println();	 	                   
       System.out.println();
       System.out.println("********************************************************************************");
       System.out.println("Programm Ende");
       System.out.println();      
       System.out.println("********************************************************************************");
        
        
        
    }//public static void main(String[] args)





    public FtpProg()
    {
        // Create a new FtpBean object.
        ftp = new FtpBean();
    }//public ftp()



    // Connect to a ftp server.
    public void connect()
    {
        try
        {
            ftp.ftpConnect("ftp://servername", "username", "passwort");
        }        
        catch(Exception e)
        {
            System.out.println(e);                    
       	try
    	{
     	 	PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "Cp850"));
     	 	out.println("!!!Die angegebenen Serverdaten sind ungültig!!!");
     	 	out.flush();
    	}
    	catch (UnsupportedEncodingException d)
    	{
      	System.err.println(d);
      	}      
      }        
   }//public void connect()
           
           

    // Close connection
    public void close()
    {
        try
        {
          	ftp.close();
        } 	catch(Exception e)
      		{
            System.out.println(e);                        
        try
    	{
     	 	PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out, "Cp850"));
     	 	out.println("!!!Fehler beim schließen der Verbindung!!!");
     	 	out.flush();
    	}
    	catch (UnsupportedEncodingException d)
    	{
      	System.err.println(d);
      	}      
     		}
    }//public void close()



    // Go to directory pub and list its content.
    public void listDirectory()
    {
        FtpListResult ftplrs = null;

        try
        {
            // Go to directory 'pub/redhat/redhat-6.2/i386/RedHat/RPMS'.
            ftp.setDirectory("pub/redhat/redhat-6.2/i386/RedHat/RPMS");
            // Get its directory content.
            ftplrs = ftp.getDirectoryContent();
        } catch(Exception e)
        {
            System.out.println(e);
        }

        // Print out the type and file name of each row.
        while(ftplrs.next())
        {
            int type = ftplrs.getType();
            if(type == FtpListResult.DIRECTORY)
                System.out.print("DIR\t");
            else if(type == FtpListResult.FILE)
                System.out.print("FILE\t");
            else if(type == FtpListResult.LINK)
                System.out.print("LINK\t");
            else if(type == FtpListResult.OTHERS)
                System.out.print("OTHER\t");
            System.out.println(ftplrs.getName());
        }
    }//public void listDirectory()



    // Get the file.
    public void getFile()
    {
        try
        {
            // Get the binary file 'export.xml' and save it to
            // the name 'local_file_name' in the hard disk.
            // Passing this class which implements the FtpObserver interface to 
            // monitor this downloading progress. Every time new bytes are read,
            // the byteRead(int) method of this class is invoked by the bean.
            ftp.getBinaryFile("export.xml", "local_file_name", this);
        } catch(Exception e)
        {
            System.out.println(e);
        }
    }//public void getFile()
    
    
    

    // Implemented for FtpObserver interface.
    // To monitor download progress.
    public void byteRead(int bytes)
    {
        num_of_bytes += bytes;
        System.out.println(num_of_bytes + " of bytes read already.");
    }

    // Needed to implements by FtpObserver interface.
    public void byteWrite(int bytes)
    {
    }
            
    
}//class ftp implements FtpObserver
```


----------



## Java2k5 (17. Okt 2005)

ZUR INFO

Die methoden 
//ftp.listDirectory();
     //ftp.getFile();
sind auskommentiert, da sie noch von einem anderen prog stammen, mitdem ich verschiedene rpm packete von einem linux server abholte.


----------



## Bleiglanz (17. Okt 2005)

> Diese XML File will ich nun per Internet Verbindung (wenn möglich ftp) auf einen anderen Server hochladen und in die xindice xml-database (http://xml.apache.org/xindice) schreiben.
> 
> Habt ihr da eine Idee wie ich das am besten anstellen kann?


wozu brauchst du da ftp???

List mal den Abschnitt "Accessing Xindice Remotely" im 

http://xml.apache.org/xindice/guide-developer.html

Ist doch Humbug, wenn du da erst die Datei flach per ftp hochladen willst?


----------

