01. august 2004 - 10:06
Der er
35 kommentarer og 1 løsning
FTP forbindelse i java program
Hej Er der nogen som kender en class som kan bruges til ftp forbindelse igennem et java program. Det eneste det skal kunne er at downloade en fil og uploade en fil. mvh frostware
Annonceindlæg tema
Forsvar & beredskab
Cybersikkerhed, realtidsdata og robuste it-systemer er blevet fundamentet for moderne forsvar.
01. august 2004 - 10:29
#1
01. august 2004 - 10:29
#2
Eksempel med GET: import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient; public class FtpGet { public static void main(String[] args) { FTPClient client = new FTPClient(); try { client.connect("192.168.1.10"); client.login("anonymous", "arne@"); InputStream is = client.retrieveFileStream("index.lis"); OutputStream os = new FileOutputStream("C:\\index.lis"); byte[] b = new byte[1000]; int n; int total = 0; while((n = is.read(b)) >= 0) { os.write(b,0,n); total += n; System.out.println("bytes: " + total); } os.close(); is.close(); client.disconnect(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
01. august 2004 - 10:30
#3
Og et svar
01. august 2004 - 10:37
#4
hmmmm....skriv lige linket til filen. Jeg kan umidelbart ikke se hvor den kan downloades
01. august 2004 - 10:38
#5
01. august 2004 - 10:51
#6
alle filerne i zip filen er hmtl filer og de kan derfor ikke importes i java. Hvordan gør man
01. august 2004 - 11:16
#7
Der er en enkelt jar fil i ZIP filen også ! unzip put commons-net-1.2.2/commons-net-1.2.2.jar i din classpath import de pakker/klasser du skal bruge
01. august 2004 - 11:49
#8
det kan jeg ikke. Jeg kan importe frem til ftp mappen, men derefter kan den ikke finde FTPClient
01. august 2004 - 12:03
#9
har fundet ud af det nu. Jeg får en fejl ved client.connect. Hvad kan det være?
01. august 2004 - 12:07
#10
Connecter du til den rette adresse ? Er der en FTP server på den adresse ?
01. august 2004 - 12:08
#11
det er i jBuilder. Programmet kører ikke endnu og kan heller ikke køre da der er en fejl (rød bølget streg) ved connect
01. august 2004 - 12:24
#12
Når du kører make eller build, hvilken fejl får du så ?
01. august 2004 - 12:35
#13
Vent lige lidt, nu er det er en lidt anden fejl. Det eneste man skulle kopiere ind er commons-net-1.2.2.jar filen, ikke?? Hvis du kender jBuilder hvor kopiere man så jar filen hen. Jeg har kopieret den ind i lib mappen.
01. august 2004 - 12:59
#14
Det er ligegyldigt hvor jar filen ligger. Du kan tilføjde den til projektet uanset hvor den ligger.
01. august 2004 - 13:00
#15
project project properties required librarries add new angiv name library path add
01. august 2004 - 18:18
#16
fino. Et tilsvarende eksempel som sender index.lis til serveren kunne f.eks. være?
01. august 2004 - 21:41
#17
Hvis du erstatter: InputStream is = client.retrieveFileStream("index.lis"); OutputStream os = new FileOutputStream("C:\\index.lis"); med: InputStream is = new FileInputStream("C:\\index.lis"); OutputStream os = client.storeFileStream("index.lis"); så tror jeg at det går den anden vej !
01. august 2004 - 22:26
#18
Havde selv fået samme idé men det virker ikke. Efter hvad jeg kan se er det i while løkken det gåt galdt. Nogen idéer?
01. august 2004 - 22:32
#19
Hvad sker der helt præcist ? Og du har også rettet FileOutputStream->FileiNputStream og retrieveFileStream->storeFileStream ?
01. august 2004 - 22:35
#20
den overfører ca. 2.9kb af filen og så stopper den. Selvom filen fylder 5-6kb. Dvs. at den mangler at overfører ca. det halve. Som sagt tror jeg det har noget med while løkken at gøre. Måske noget med at den er færdig med at læse på harddisken før den har skrevet til serveren. (men jeg er ikke sikker, bare et gæt :-S)
01. august 2004 - 22:39
#21
Mystisk. Hvad sker der hvis du ændrer buffer størrelsen ? Ned til 100 eller op til 10000 ?
01. august 2004 - 22:41
#22
ingen forskel
01. august 2004 - 22:43
#23
lige så vi er enige, bufferen er byte[] b = new byte[1000]; ikke?
01. august 2004 - 22:48
#24
jep
01. august 2004 - 22:49
#25
så hjælper det ikke
01. august 2004 - 22:56
#26
Jeg har lige uploadet 1MB med den her kode: import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.SocketException; import org.apache.commons.net.ftp.FTPClient; public class FtpPut { public static void main(String[] args) { FTPClient client = new FTPClient(); try { client.connect("localhost"); client.login("anonymous", "arne@"); InputStream is = new FileInputStream("C:\\z.zip"); client.setFileType(FTPClient.BINARY_FILE_TYPE); OutputStream os = client.storeFileStream("z.zip"); byte[] b = new byte[1000]; int n; int total = 0; while((n = is.read(b)) >= 0) { os.write(b,0,n); total += n; System.out.println("bytes: " + total); } os.close(); is.close(); client.disconnect(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
01. august 2004 - 23:09
#27
det er godt nok mystisk. Jeg kan sagtens uploade en exe fil på 700kb, men en htm fil stopper den efter et bestemt antal tegm!
01. august 2004 - 23:11
#28
Uploader du ascii eller binary ? Og hvad er den HTML fil lavet med ?
01. august 2004 - 23:12
#29
Mit gæt er at: - du uploader ascii - den HTML ikke indeholder linie skift - FTP client eller server bliver ked af en linie på >2900 tegn
01. august 2004 - 23:19
#30
hvis det er de 2900 tegn hvad kan man så gøre
01. august 2004 - 23:22
#31
Prøv at upload den binært. Altså med: client.setFileType(FTPClient.BINARY_FILE_TYPE); og se om det hjælper.
01. august 2004 - 23:22
#32
Og om filen virker efter upload.
01. august 2004 - 23:25
#33
det er det samme som før
02. august 2004 - 17:32
#34
hvad skal jeg gøre??
02. august 2004 - 19:06
#35
Godt spørgsmål. Kan du upload den fil til den server med manuel FTP ?
02. august 2004 - 21:43
#36
har selv fundet ud af det ved at bruge lidt andre linier. InputStream is1 = new FileInputStream("index.lis"); client.storeFile("index.lis",is1); client.disconnect();
Kurser inden for grundlæggende programmering