vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Dateigröße einer Datei auf einem Server ermitteln 
Autor: Hannes
Datum: 24.08.02 19:25

gefunden unter http://www.shadoware.de

Sie benötigen erstmal ein bzw. zwei Steuerelemente; das Winsock Control und eventuell - je nach Belieben - eine "ProgressBar" aus den Microsoft Windows Common Controls. Die Erklärung zu den farblich hervorgehobenen Elementen finden SIe wie immer weiter unten:

Private mblnIsHeader As Boolean
Private mstrReturnHeader As String
Private mstrRequestHeader As String
Private bolUseProgressBar As Boolean
Private objProgressBar As Object

Private Sub Winsock1_Connect()
'Wenn Verbindung aufgebaut ist, Header senden
Winsock1.SendData mstrRequestHeader
End Sub

Private Sub DownloadFile(URL As String, Destination As String, Optional ProgressBarToUse As Object)
Dim strPureURL As String
Dim strServerAddress As String
Dim strServerHostIP As String
Dim strDocumentURI As String
Dim lngStartPos As Long
Dim lngServerPort As Long

'Prüfen, ob eine Fortschrittsleiste angegeben wurde
If Not ProgressBarToUse Is Nothing Then
bolUseProgressBar = True
Set objProgressBar = ProgressBarToUse
Else
bolUseProgressBar = False
End If

'Header schreiben
mstrRequestHeader = ""
strRequestTemplate = "GET _$-$_$- HTTP/1.0" & Chr(13) & Chr(10) & _
"Accept: image/gif, image/x-xbitmap, image/jpeg, " & _
"image/pjpeg, application/vnd.ms-powerpoint, " & _
"application/vnd.ms-excel, application/msword, " & _
"application/x-comet, */*" & Chr(13) & Chr(10) & _
"Accept-Language: en" & Chr(13) & Chr(10) & _
"Accept-Encoding: gzip , deflate" & Chr(13) & Chr(10) & _
"Cache-Control: no-cache" & Chr(13) & Chr(10) & _
"Proxy-Connection: Keep-Alive" & Chr(13) & Chr(10) & _
"User-Agent: SSM Agent 1.0" & Chr(13) & Chr(10) & _
"Host: @$@@$@" & Chr(13) & Chr(10)

'"http://" entfernen
strPureURL = Right(URL, Len(URL) - 7)
lngStartPos = InStr(1, strPureURL, "/")
If lngStartPos < 1 Then
strServerAddress = strPureURL
strDocumentURI = "/"
Else
strServerAddress = Left(strPureURL, lngStartPos - 1)
strDocumentURI = Right(strPureURL, Len(strPureURL) - lngStartPos + 1)
End If

strServerHostIP = strServerAddress
lngServerPort = 80

'URL in Header einsetzen
mstrRequestHeader = strRequestTemplate
mstrRequestHeader = Replace(mstrRequestHeader, "_$-$_$-", strDocumentURI)

mstrRequestHeader = Replace(mstrRequestHeader, "@$@@$@", strServerAddress)
mstrRequestHeader = mstrRequestHeader & Chr(13) & Chr(10)

'Zieldatei zum binären Schreiben öffnen
Open Destination For Binary Access Write As #1
mblnIsHeader = True

'Verbindung zum Server aufbauen
Winsock1.Connect strServerHostIP, lngServerPort
End Sub

Private Sub Winsock1_Close()
Winsock1.Close

'Datei schließen
Close #1
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
'Wenn Daten empfangen werden
Dim lngBytes As Long
Dim blnFoundHeadEndByte As Boolean
Dim b() As Byte
Dim b2() As Byte
Dim aryMyArray As Variant
Dim i As Long
Dim j As Long
Dim strChr As String

Winsock1.PeekData strTemp, vbString
If (mblnIsHeader) Then
'Header empfangen
Winsock1.GetData b(), vbByte, 350
mstrReturnHeader = StrConv(b(), vbUnicode)
For i = LBound(b) + 3 To UBound(b)
If (blnFoundHeadEndByte) Then
b2(j) = b(i)
j = j + 1
Else
If b(i - 3) = 13 And b(i - 2) = 10 And b(i - 1) = 13 And b(i) = 10 Then
ReDim b2(UBound(b) - i)
If UBound(b2) > 0 Then ReDim b2(UBound(b2) - 1)
blnFoundHeadEndByte = True
j = 0
End If
End If
Next i

'Dateigröße aus Header auslesen
strStart = InStr(1, mstrReturnHeader, "Content-Length: ") + Len("Content-Length: ")
strEnd = InStr(strStart, mstrReturnHeader, Chr(13))

'Eventuell das Maximum der Fortschrittsleiste auf die Dateiröße setzen
If bolUseProgressBar Then objProgressBar.Max = Mid(mstrReturnHeader, strStart, strEnd - strStart)


If (UBound(b2) > 0) Then
If bolUseProgressBar Then objProgressBar.Value = objProgressBar.Value + UBound(b2) + 1
Put #1, , b2()
End If
mblnIsHeader = False
Else
Winsock1.GetData b, vbByte

'Empfangene Daten in Datei schreiben
Put #1, , b()

'Eventuell Fortschrittsleiste aktualisieren
If bolUseProgressBar Then objProgressBar.Value = objProgressBar.Value + UBound(b) + 1
End If
End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dateigröße einer Datei auf einem Server ermitteln61NightmareX24.08.02 18:45
Re: Dateigröße einer Datei auf einem Server ermitteln62Hannes24.08.02 19:25
thx49NightmareX25.08.02 14:52

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel