dateiübertragung per ftp

Status
Nicht offen für weitere Antworten.

Ela

Mitglied
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:

Code:
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:

Code:
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

Mitglied
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
a file at the server site. If the file specified in the
pathname exists at the server site, then its contents shall
be replaced by the data being transferred. A new file is
created at the server site if the file specified in the
pathname does not already exist.

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

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

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

Müsste so gehen.
 

bummerland

Top Contributor
ich habs mal so gemacht:

Code:
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

Mitglied
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.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben