# dateiübertragung per ftp



## Ela (15. Mrz 2004)

wieder ich 
gleiches programm ... neues problem ...
und zwar: weiß jemand vielleicht wie ich ne datei rüberschicken kann bzw. runterladen kann per ftp?
sowas hab ich bis jetzt:


```
message=din.readLine();
	     System.out.println(message);
		     
             pout.println ("USER username");
             message=din.readLine();
             pout.println("PASS pass");
             System.out.println(din.readLine());
	     pout.println("TYPE I");
	     System.out.println(din.readLine());
	     pout.println("PASV");
	     System.out.println(din.readLine());
	     pout.println("STOR neu.java");
	     System.out.println(din.readLine());
		
	        
	  
	     pout.println("QUIT");
	     System.out.println(din.readLine());
```

aber das läuft net. ich schätze man muss nach dem STOR nun irgendwie die daten "rüberschieben" .. aber bloß wie? habe mir schon mehere fpt-clients angeschaut aber werde da nciht schlau draus .. 
in der konsole siehts dann so aus:


```
Ela@linux:~/java-programme> java PEScanner
220 Personal FTP Server ready
230 User upload logged in.
200 Type set to I.
227 Entering Passive Mode (212,202,30,94,6,127).
150 Opening data connection for neu.java.
221 Goodbye.
All threads finished
Ela@linux:~/java-programme>
```

nach dem "opening data connection" kommt aber nix mehr. d.h. da wird ja nichts geschickt oder so ... 
weiß jemand was ich falsch mache, bzw. was mir fehlt und wie ich das hinbekomme??? 
ein ganz großes dankeschön schonmal 

mfg,
ela.


----------



## Phiman (17. Mrz 2004)

Ich hab davon auch keine Ahnung, aber ich hab hier eben mal im FT-Protocol nachgelesen:

http://www.w3.org/Protocols/rfc959/8_PortNumber.html

Da steht:



> STORE (STOR)
> 
> This command causes the server-DTP to accept the data
> transferred via the data connection and to store the data as
> ...



Ich würde mal denken das nach dem Senden dieses Befehls die Bytes der Datei folgen sollten. Per FileInputStream würde ich die Daten der Datei in einen Array einlesen und diesen dann über den OutputStream zum Server senden.
Das ist aber auch wirklich nur ne Idee, wie gesagt, ich hab da auch keine Ahnung von.


----------



## Illuvatar (17. Mrz 2004)

Du musst nach dem STORE nicht nur eine Zeile lesen, sondern solange, bis der Server nichts mehr sendet.


```
String s;
while ((s = din.readLine()) != null)
  System.out.println (s);
```

Müsste so gehen.


----------



## bummerland (17. Mrz 2004)

ich habs mal so gemacht:


```
String urlValue = "ftp://" + username + ":" + password + "@" + ftpserver + "/" + ftpdirectory;
URL url = new URL(urlValue + "/" + deinFile.getName(); //deinFile ist ein File Objekt
URLConnection urlc = url.openConnection();
OutputStream os = urlc.getOutputStream(); // To upload
FileInputStream is = new FileInputStream(deinFile.getAbsolutePath());
int j;
do
{
        j = is.read();
        if (j != -1) os.write(j);
}
while(j != -1);
os.close();
```


----------



## Ela (17. Mrz 2004)

hi leute.
vielen dank für eure hilfe. kam noch net dazu das auszuprobieren ... werde das gleich mal tun.
ganz ganz nett von euch zu helfen  danke.

mfg,
ela.


----------

