datein auf ftp hochladen

Für allgemeine Fragen zur Programmierung mit PureBasic.
netfreak
Beiträge: 91
Registriert: 23.10.2004 18:30
Kontaktdaten:

datein auf ftp hochladen

Beitrag von netfreak »

Hallo,
ich prgge zur zeit einen kleine ftp der soll mir einen Datei auf den server laden! Doch möchte ich mich nicht auf win verlassen des wegen möchte ich wissen ob es noch eine ander möglich keit gibt eine Datei auf den Server zu laden als die:

Code: Alles auswählen

; www.purearea.net (Sourcecode collection by cnesm)
; Author:
; Date: 22. November 2003

#INTERNET_SERVICE_FTP=1
#INTERNET_OPEN_TYPE_DIRECT=1
#FTP_PORT=21
#FTP_TRANSFER_ASCII=1
#FTP_TRANSFER_BINARY=2
Proxy.s=""
ProxyBypass.s=""
ServerName.s="namedesftpservers"
UserName.s="testuser"
Password.s="testepass"
localfile.s="iptext.txt"
remotefile.s="iptext.txt"

hInternet=InternetOpen_("FTP",#INTERNET_OPEN_TYPE_DIRECT,Proxy,ProxyBypass,0)
If hInternet
  hConnect=InternetConnect_(hInternet,ServerName,#FTP_PORT,UserName,Password,#INTERNET_SERVICE_FTP,0,0)
  If hConnect
    If FtpPutFile_(hConnect,localfile,remotefile,#FTP_TRANSFER_ASCII,0)
      MessageRequester("","File has been sent",0)
    Else
      MessageRequester("Error", "Failure while sending file...",0)
    EndIf
  Else
    MessageRequester("Error", "Couldn't get a connection to the server!",0)
  EndIf
  InternetCloseHandle_(hInternet)
Else
  MessageRequester("Error", "Internet isn't reachable.",0)
EndIf
; ExecutableFormat=Windows
; EOF
Ich hoffe ihr könnt mir helfen!
Bin für jede antwort dankbar!

mfg
netfreak
mfg
netfreak
Benutzeravatar
benny
Beiträge: 383
Registriert: 29.08.2004 09:18
Wohnort: Am Ende des www's
Kontaktdaten:

Beitrag von benny »

@netfreak:

hast Du Dir schonmal die FTP-Userlib von num3 angeguckt.
Kannst Du wie gewohnt unter PureArea runterladen:

http://www.purearea.net/pb/download/use ... ll_FTP.exe
So long,
benny!
.
nur t0te f1sche schw1mmen m1t dem str0m - 00100 !
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

HI

Beitrag von Buggymonkey »

hi,
ich bin durch die suche auf diesen tread gekommen, die lib funcst bei mir ganz wunder bar, ich kann connecten, einloggen, nur ich kann nicht an den dateien verändern weiß einer von euch dar ein lösung?? mein code sieht so aus:

Code: Alles auswählen

Com_port.l=FTP_Connect("ftp.milten.lima-city.de",21)
      If Com_port
      OpenConsole()
      PrintN("Erfolgreich verbunden")
      If FTP_Login(Com_port,"lan-ops","*****")
      PrintN("Erfolgreich eingeloggt")
       If FTP_ChangeDir(Com_port,"html")
        PrintN("Verzeichnis wird gesucht")
      EndIf
      If FTP_ChangeDir(Com_port,"Lan-ops")
        PrintN("Verzeichnis wird gesucht")
      EndIf
      If FTP_CurrentDir(Com_port)
        PrintN(FTP_Last_Message())
      EndIf
      If FTP_Store(Com_port,"c:\Programme\GB-editor\GB.txt")
      PrintN("Datei wurde Hochgeladen")
      PrintN(FTP_Last_Message())
      Else
      PrintN(FTP_Last_Message())
      EndIf 
      Else 
      PrintN("Login fehlgeschlagen")
      EndIf 
      FTP_LogOut(Com_port)
      Else 
      MessageRequester("ERROR","Es konnte keine Verbindung mit dem server hergestellt werden")
      EndIf 
      FTP_Close(Com_port)
warum geht das nicht :cry: :cry: :cry: :cry:

Gruß Nils

[edit]
es wird die fehlermeldung "Time out" aus geschmissen
[/edit]
wenn wer rechtschreibfehler findet, kann er sie behalten, :)

Ich würde gern die Welt verändern,
doch Gott gibt mir den Quellcode nicht!

http://www.house-of-chat.de umbedingt mal vorbei schaun ^^
mike
Beiträge: 4
Registriert: 28.10.2004 09:12

FTP-Userlib von num3

Beitrag von mike »

Hi,
auch ich habe mir die FTP-Userlib von num3 runtergeladen.
Auf purearena ist sie beschrieben als Datei mit Quellcode und vielen Befehlen. Nachdem sie sich installiert hat, wo finde ich dann Quellcode und Befehle oder Anleitung für die lib?
Bin wie immer dankbar für jede Antwort
Michael
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Code: Alles auswählen

InitNetwork()

Global EOL.s
EOL.s = Chr(13)+Chr(10)

Procedure.s PassiveIP(Text.s)
  s = FindString(Text, "(", 1)+1
  l = FindString(Text, ")", s)-s
  Host.s = Mid(Text, s, l)
  IP.s = StringField(Host, 1, ",")+"."+StringField(Host, 2, ",")+"."+StringField(Host, 3, ",")+"."+StringField(Host, 4, ",")
  ProcedureReturn IP.s
EndProcedure

Procedure.l PassivePort(Text.s)
  s = FindString(Text, "(", 1)+1
  l = FindString(Text, ")", s)-s
  Host.s = Mid(Text, s, l)
  Port = Val(StringField(Host, 5, ","))*256+Val(StringField(Host, 6, ","))
  ProcedureReturn Port
EndProcedure

Procedure.s Wait(ConnectionID, Timeout)
  Delay(10)
  *Buffer = AllocateMemory(60000)
  t = ElapsedMilliseconds()
  While NetworkClientEvent(ConnectionID) <> 2 And ElapsedMilliseconds()-t < Timeout : Delay(1) : Wend
  If ElapsedMilliseconds()-t < Timeout
  Size = ReceiveNetworkData(ConnectionID, *Buffer, 60000)
  Text.s = PeekS(*Buffer)
  FreeMemory(*Buffer)
  SetGadgetText(#PROGRESS_INFO, Text)
  ProcedureReturn Text
  EndIf
EndProcedure

Procedure Wait2(ConnectionID, *Buffer, Size, Timeout)
  Delay(50)
  t = ElapsedMilliseconds()
  While NetworkClientEvent(ConnectionID) = 0 And ElapsedMilliseconds()-t < Timeout : Delay(1) : Wend
  If ElapsedMilliseconds()-t < Timeout
  CurSize = ReceiveNetworkData(ConnectionID, *Buffer, Size)
  While CurSize < Size
    If NetworkClientEvent(ConnectionID) = 2
    CurSize + ReceiveNetworkData(ConnectionID, *Buffer+CurSize, Size-CurSize)
    EndIf
  Wend
  ProcedureReturn CurSize-1
  EndIf
EndProcedure

Procedure SendNetworkString2(ConnectionID, String.s)
  SetGadgetText(#PROGRESS_INFO, String.s)
  SendNetworkString(ConnectionID, String.s)
EndProcedure

Procedure FTP_Connect(Server.s, Port, Name.s, Pass.s)
  ConnectionID = OpenNetworkConnection(Server, Port)
  If ConnectionID
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "220"
      SendNetworkString2(ConnectionID, "USER "+Name.s+EOL)
      Text.s = Wait(ConnectionID, 5000)
      If Left(Text, 3) = "331"
        SendNetworkString2(ConnectionID, "PASS "+Pass.s+EOL)
        Text.s = Wait(ConnectionID, 5000)
        If Left(Text, 3) = "230"
          SendNetworkString2(ConnectionID, "TYPE A"+EOL)
          Wait(ConnectionID, 5000)
          ProcedureReturn ConnectionID
        EndIf
      EndIf
    EndIf
    CloseNetworkConnection(ConnectionID)
  EndIf
EndProcedure

Procedure FTP_SetCurrentDirectory(ConnectionID, Path.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "CWD "+Path.s+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "250"
      SendNetworkString2(ConnectionID, "PWD"+EOL)
      Text.s = Wait(ConnectionID, 5000)
      If Left(Text, 3) = "257"
        ProcedureReturn 1
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure.s FTP_List(ConnectionID)
  If ConnectionID
    SendNetworkString2(ConnectionID, "TYPE A"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "200"
    SendNetworkString2(ConnectionID, "PASV"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "227"
      Passive = OpenNetworkConnection(PassiveIP(Text.s), PassivePort(Text.s))
      If Passive
        SendNetworkString2(ConnectionID, "LIST"+EOL)
        Text.s = Wait(ConnectionID, 5000)
        If Left(Text, 3) = "150"
          Text.s = Wait(ConnectionID, 5000)
          Delay(10)
          Result.s = Wait(Passive, 5000)
          CloseNetworkConnection(Passive)
          Text.s = Wait(ConnectionID, 5000)
          ProcedureReturn Result
        EndIf
        CloseNetworkConnection(Passive)
      Else
      EndIf
    EndIf
    EndIf
  EndIf
EndProcedure

Procedure.s FTP_NameList(ConnectionID)
  If ConnectionID
    SendNetworkString2(ConnectionID, "TYPE A"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "200"
    SendNetworkString2(ConnectionID, "PASV"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "227"
      Passive = OpenNetworkConnection(PassiveIP(Text.s), PassivePort(Text.s))
      If Passive
        SendNetworkString2(ConnectionID, "NLST"+EOL)
        Delay(100)
        Text.s = Wait(ConnectionID, 5000)
        If Left(Text, 3) = "150"
          Text.s = Wait(ConnectionID, 5000)
          Delay(100)
          Result.s = Wait(Passive, 5000)
          CloseNetworkConnection(Passive)
          Text.s = Wait(ConnectionID, 5000)
          ProcedureReturn Result
        EndIf
        CloseNetworkConnection(Passive)
      EndIf
    EndIf
    EndIf
  EndIf
EndProcedure

Procedure.l FTP_DownloadFile(ConnectionID, SFile.s, DFile.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "TYPE I"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "200"
    SendNetworkString2(ConnectionID, "PASV"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "227"
      Passive = OpenNetworkConnection(PassiveIP(Text.s), PassivePort(Text.s))
      If Passive
        SendNetworkString2(ConnectionID, "RETR "+SFile+EOL)
        Delay(100)
        Text.s = Wait(ConnectionID, 5000)
        s = FindString(Text, "(", 1)+1
        l = FindString(Text, " ", s)-s
        Size = Val(Mid(Text, s, l))
        If Left(Text, 3) = "150"
          *Buffer = AllocateMemory(1024)
          Text = ""
          s = 0
          If CreateFile(0, DFile)
            While s < Size
              Size2 = ReceiveNetworkData(Passive, *Buffer, 1024)
              If Size2 > 0
                s + Size2
                WriteData(*Buffer, Size2)
                SetGadgetState(#PROGRESS, Int((100/Size)*s))
                WindowEvent()
              EndIf
            Wend
            CloseFile(0)
          EndIf
          FreeMemory(*Buffer)
          CloseNetworkConnection(Passive)
          Text.s = Wait(ConnectionID, 5000)
          WindowEvent()
          ProcedureReturn 1
        EndIf
        CloseNetworkConnection(Passive)
      EndIf
    EndIf
    EndIf
  EndIf
EndProcedure

Procedure.l FTP_UploadFile(ConnectionID, SFile.s, DFile.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "TYPE I"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "200"
    SendNetworkString2(ConnectionID, "PASV"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "227"
      Passive = OpenNetworkConnection(PassiveIP(Text.s), PassivePort(Text.s))
      If Passive
        SendNetworkString2(ConnectionID, "STOR "+DFile+EOL)
        Delay(100)
        Text.s = Wait(ConnectionID, 5000)
        If Left(Text, 3) = "150"
          *Buffer = AllocateMemory(FileSize(SFile))
          SetGadgetState(#PROGRESS, 25)
          WindowEvent()
          If ReadFile(0, SFile)
            ReadData(*Buffer, FileSize(SFile))
            CloseFile(0)
            SetGadgetState(#PROGRESS, 50)
            WindowEvent()
          EndIf
          SendNetworkData(Passive, *Buffer, FileSize(SFile))
          SetGadgetState(#PROGRESS, 75)
          WindowEvent()
          FreeMemory(*Buffer)
          CloseNetworkConnection(Passive)
          SetGadgetState(#PROGRESS, 100)
          WindowEvent()
          Text.s = Wait(ConnectionID, 5000)
          WindowEvent()
          ProcedureReturn 1
        EndIf
        CloseNetworkConnection(Passive)
      EndIf
    EndIf
    EndIf
  EndIf
EndProcedure

Procedure FTP_DeleteDirectory(ConnectionID, Dir.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "RMD "+Dir+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "250"
      ProcedureReturn 1
    EndIf
  EndIf
EndProcedure

Procedure FTP_RenameFile(ConnectionID, FromName.s, ToName.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "RNFR "+FromName+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "350"
      SendNetworkString2(ConnectionID, "RNTO "+ToName+EOL)
      Text.s = Wait(ConnectionID, 5000)
      If Left(Text, 3) = "250"
        ProcedureReturn 1
      EndIf
    EndIf
  EndIf
EndProcedure

Procedure FTP_DeleteFile(ConnectionID, File.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "DELE "+File+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "250"
      ProcedureReturn 1
    EndIf
  EndIf
EndProcedure

Procedure FTP_CreateDirectory(ConnectionID, Dir.s)
  If ConnectionID
    SendNetworkString2(ConnectionID, "MKD "+Dir+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "257"
      ProcedureReturn 1
    EndIf
  EndIf
EndProcedure

Procedure FTP_DirectoryUp(ConnectionID)
  If ConnectionID
    SendNetworkString2(ConnectionID, "CDUP"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "250"
      ProcedureReturn 1
    EndIf
  EndIf
EndProcedure

Procedure FTP_NoEvent(ConnectionID)
  If ConnectionID
    SendNetworkString2(ConnectionID, "NOOP"+EOL)
    Text.s = Wait(ConnectionID, 5000)
  EndIf
EndProcedure

Procedure FTP_Quit(ConnectionID)
  If ConnectionID
    SendNetworkString2(ConnectionID, "PASV"+EOL)
    Text.s = Wait(ConnectionID, 5000)
    If Left(Text, 3) = "221"
      ProcedureReturn 1
    EndIf
  EndIf
EndProcedure 
Da sind ein paar Funktionen, die auf Win und Lin funzen sollten.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

THX

Beitrag von Buggymonkey »

Hi, danke für die antworten, werde ich mal aus probieren wenn ich wieder zu hause bin, in der Schule kann es noch nicht testen... schade.

die beispiele sind im examples ordner unter ftp!!!

Gruß Nils
wenn wer rechtschreibfehler findet, kann er sie behalten, :)

Ich würde gern die Welt verändern,
doch Gott gibt mir den Quellcode nicht!

http://www.house-of-chat.de umbedingt mal vorbei schaun ^^
Benutzeravatar
Buggymonkey
Beiträge: 47
Registriert: 02.09.2004 19:36
Wohnort: Löhne
Kontaktdaten:

Danke

Beitrag von Buggymonkey »

Hi, ich noch mal zwar etwas später, aber die Funktionen geht echt wunderbar toll!!!!!!!!!!!!!!!!!!!!

DANKE

Gruß Nils
wenn wer rechtschreibfehler findet, kann er sie behalten, :)

Ich würde gern die Welt verändern,
doch Gott gibt mir den Quellcode nicht!

http://www.house-of-chat.de umbedingt mal vorbei schaun ^^
Antworten