Automatisches download von Files

Übersicht BlitzBasic Allgemein

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen

 

David

BeitragFr, Aug 27, 2004 21:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Das wirst du wohl schwehrlich mit dem HTTP Protokoll zustande bringen.
Da wirst du dich über das FTP Protokoll informieren müssen.

grüße
http://bl4ckd0g.funpic.de

joachim_neu

BeitragFr, Aug 27, 2004 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
aber wie macht das z.B. ein browser? der braucht doch auch net so lange!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de
 

David

BeitragFr, Aug 27, 2004 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Für was braucht der nicht so lange?

grüße
http://bl4ckd0g.funpic.de

joachim_neu

BeitragFr, Aug 27, 2004 22:00
Antworten mit Zitat
Benutzer-Profile anzeigen
beim downloaden! ich meine so lange, wie dein script!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de
 

David

BeitragFr, Aug 27, 2004 22:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Beschwehr dich nich sondern machs schneller.
Auserdem ist das kein Script!

grüße
http://bl4ckd0g.funpic.de

soli

BeitragSa, Aug 28, 2004 3:52
Antworten mit Zitat
Benutzer-Profile anzeigen
ist es das was du suchst?
http://www.blitzcoder.com/cgi-...omments=no
solitaire

Markus Rossé

BeitragSa, Aug 28, 2004 11:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Probier das:

http://www.blitzbasic.com/code...hp?code=16

cu, Markus Rossé
 

David

BeitragSa, Aug 28, 2004 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

So, diese Version ist nun schneller als die letzte:

Code: [AUSKLAPPEN]

Graphics 640, 480, 32

Const FILE_NAME$  = "http://weblink.art-fx.org/6.jpg"
Const DST_FILE$   = "c:\testpic.jpg"
Const BUFFER_SIZE = 65536

LoadWebFile( FILE_NAME, DST_FILE )

WaitKey
End

Function LoadWebFile( srcFile$, dstFile$ )
   Local TCPStream, tmpPos, dataSize, tmpBank
   Local Host$ = "", HTTPHeader$ = ""
   Local Buffer = BUFFER_SIZE

   If ( Left( srcFile$, 7 ) = "http://" ) srcFile$ = Right( srcFile$, Len( srcFile$ ) - 7 )
   
   tmpPos = Instr( srcFile$, "/" )
   
   If ( tmpPos ) Then
      Host$ = Left( srcFile$, tmpPos - 1 )
      srcFile = Right( srcFile$, Len( srcFile ) - tmpPos + 1 )
   Else
      Host$ = srcFile$
      srcFile$ = "/"
   End If
   
   TCPStream = OpenTCPStream( Host$, 80 )
   
   If ( Not TCPStream ) Then
      RuntimeError( "Fehler beim verbinden zu: " + Host$ )
   End If
   
   WriteLine( TCPStream, "GET " + srcFile$ + " HTTP/1.1" )
   WriteLine( TCPStream, "Host: " + Host$ )
   WriteLine( TCPStream, "Accept: */*" )
   WriteLine( TCPStream, Chr$( 10 ) )
   
   Repeat
      HTTPHeader$ = ReadLine( TCPStream )
      
      If ( Left( HTTPHeader$, 16 ) = "Content-Length: " ) Then
         dataSize = Right( HTTPHeader$, Len( HTTPHeader$ ) - 16 )
      End If
   Until HTTPHeader$ = "" Or Eof( TCPStream )   
   
   If ( dataSize > 0 )
      file = WriteFile( dstFile$ )
      tmpBank = CreateBank( Buffer )
      
      If ( Not file ) Then
         RuntimeError( "Fehler beim erstellen der Downloaddatei" )
      End If
      
      bytesReaded = 0
      
      Repeat         
         bytesRemaind = dataSize - bytesReaded
         
         If ( bytesRemaind < BUFFER_SIZE ) Then
            Buffer = bytesRemaind
         End If
            
         s = ReadBytes( tmpBank, TCPStream, 0, Buffer )
         WriteBytes( tmpBank, file, 0, s )
            
         bytesReaded = bytesReaded  + s
      Until s <> BUFFER_SIZE
      
      CloseFile( file )
      CloseTCPStream( TCPStream )
      FreeBank( tmpBank )
   End If
End Function


grüße
http://bl4ckd0g.funpic.de

Sebastian

BeitragSa, Aug 28, 2004 13:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Http oder Ftp zurgriff ??


Bei Htttp mus man GET <URL> senden.
( Natürlich <url> durch die Url ersetzen ......

Als Antwort wird die Website oder das Bild züruck geschickt ..


Ps.: Habs bis jetzt nur bei Seiten gemacht .....
Seit 2 Jahren kein BlitzBasic und kein Windows mehr, und stolz darauf !
 

David

BeitragSa, Aug 28, 2004 13:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

WriteLine( TCPStream, "GET " + srcFile$ + " HTTP/1.1" )


Rolling Eyes

grüße
http://bl4ckd0g.funpic.de

WEBLink

BeitragSa, Aug 28, 2004 13:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Funktioniert natürlich hervoragent. Nur durchblicken tu ich nicht so ganz. Währe net wenn du kleine Beschreibungen dazu machen könntest.
 

David

BeitragSa, Aug 28, 2004 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Code: [AUSKLAPPEN]

Graphics 640, 480, 32

Const FILE_NAME$  = "http://weblink.art-fx.org/6.jpg"
Const DST_FILE$   = "c:\testpic.jpg"
Const BUFFER_SIZE = 65536

LoadWebFile( FILE_NAME, DST_FILE )

WaitKey
End

Function LoadWebFile( srcFile$, dstFile$ )
   Local TCPStream, tmpPos, dataSize, tmpBank
   Local Host$ = "", HTTPHeader$ = ""
   Local Buffer = BUFFER_SIZE

   ; falls ein http:// in der url gefunden wurde, dieses entfernen
   If ( Left( srcFile$, 7 ) = "http://" ) srcFile$ = Right( srcFile$, Len( srcFile$ ) - 7 )
   
   tmpPos = Instr( srcFile$, "/" )
   
   ; host ermitteln und dateipfad an variable "srcFile" übergeben
   If ( tmpPos ) Then
      Host$ = Left( srcFile$, tmpPos - 1 )
      srcFile = Right( srcFile$, Len( srcFile ) - tmpPos + 1 )
   Else
      Host$ = srcFile$
      srcFile$ = "/"
   End If
   
   ; verbindung zum server herstellen über port 80 (http)
   TCPStream = OpenTCPStream( Host$, 80 )

   ; wenn TCPStream = 0 ist, war der verbindungsversuch erfolglos
   If ( Not TCPStream ) Then
      RuntimeError( "Fehler beim verbinden zu: " + Host$ )
   End If
   
   ; datei anfordern:
   ;   Get /6.jpg HTTP/1.1
   ;    Host: weblink.art-fx.org
   ;    Accept: */*
   WriteLine( TCPStream, "GET " + srcFile$ + " HTTP/1.1" )
   WriteLine( TCPStream, "Host: " + Host$ )
   WriteLine( TCPStream, "Accept: */*" )
   WriteLine( TCPStream, Chr$( 10 ) )
   
   ;http header überspringen und länge des datenpackets zwischenspeichern
   Repeat
      HTTPHeader$ = ReadLine( TCPStream )
      
      If ( Left( HTTPHeader$, 16 ) = "Content-Length: " ) Then
         dataSize = Right( HTTPHeader$, Len( HTTPHeader$ ) - 16 )
      End If
   Until HTTPHeader$ = "" Or Eof( TCPStream )   
   
   ;sind überhaupt daten geschickt worden?
   If ( dataSize > 0 )
      ; datei auf lokalem datenträger erstellen
      file = WriteFile( dstFile$ )
      ; hilf-"bank" erstellen
      tmpBank = CreateBank( Buffer )
      
      ; konnte die lokale datei überhaupt angelegt werden?
      If ( Not file ) Then
         RuntimeError( "Fehler beim erstellen der Downloaddatei" )
      End If
      
      bytesReaded = 0
      
      ; lesen der bilddaten
      Repeat      
         ; verbleibende bytes berechnen   
         bytesRemaind = dataSize - bytesReaded
         
         ; anzahl der verbleibenden bytes kleiner als die bisher verwendete puffergröße?
         If ( bytesRemaind < BUFFER_SIZE ) Then
            ; puffergröße verkleinern
            Buffer = bytesRemaind
         End If
            
         ; <buffer> bytes in die hilf-"bank" lesen
         s = ReadBytes( tmpBank, TCPStream, 0, Buffer )
         ; die gelesenen bytes in die lokale datei schreiben
         WriteBytes( tmpBank, file, 0, s )
            
         ; hilfvariable aktualisieren
         bytesReaded = bytesReaded  + s
      Until s <> BUFFER_SIZE
      
      ; schließen der verbindung, der lokalen datei und freigabe der bank
      CloseFile( file )
      CloseTCPStream( TCPStream )
      FreeBank( tmpBank )
   End If
End Function


Rechtschreibfehler kannste behalten. Razz

grüße
http://bl4ckd0g.funpic.de

WEBLink

BeitragSa, Aug 28, 2004 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Thx, wann bist du immer im ICQ on?
Möcht ma mit dir reden^^

Gehe zu Seite Zurück  1, 2

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group