Gå til innhold

Laste ner filer fra internett


Anbefalte innlegg

Videoannonse
Annonse
  • 2 uker senere...

ok, eg har fått alt te og virka nå, men bestemte meg for og oppgradera, då fant eg ut at ann ikkje greide og lasta ner serligt store filer... ikkje med og bare dima ein sBuffer() As byte iallefal, någen som har en bedre ide te kossen eg kan lasta ner _STORE_ filer med AsycRead metoden? (ca. 700mb)

Lenke til kommentar
Jeg tror det er 32767.

En byte-array kan håndtere omtrent 2 GB med rå data, slik at problemet ligger neppe der.

 

Du må laste ned filer slik som vist i eksempelet jeg henviste til ovenfor - ved å skrive til filen hver gang en mottar informasjon. Da slipper du å lagre all informasjon i RAM-en.

Endret av aadnk
Lenke til kommentar

så vitt eg kan se i eksempelet du henviste til ovefor lagret den alt til minnet..

 

og i koden fra planet-source-code blei iallefall alt lagret i minnet...

Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty)
   On Error Resume Next
   Dim f() As Byte, fn As Long
   If AsyncProp.BytesMax <> 0 Then
       fn = FreeFile
       f = AsyncProp.Value
       Open AsyncProp.PropertyName For Binary Access Write As #fn
       Put #fn, , f
       Close #fn
   Else
       RaiseEvent DownloadError(AsyncProp.PropertyName)
   End If
   RaiseEvent DownloadComplete(CLng(AsyncProp.BytesMax), AsyncProp.PropertyName)
End Sub

(legg merke til at filen blir skrevet _før_ du får DownloadComplete..

 

Noen god ide til hvordan jeg kan lage denne buffer filen? finnes det noen "Open For Binary Append" eller lignende kode? kan du bruke Get/Put selv om du åpner filen for "Append"?

 

[EDIT] Uanz, blir ikke alt lagret i AsyncProp.Value uanset?

 

[EDIT2] Kossen fungere det vis eg bruke vbAsyncTypeFile?

Endret av Richard87
Lenke til kommentar

Du kan nok slette AsyncProp.Value periodevis etter som filsegmentene skrives til harddisken, omtrent således:

 

Private Sub UserControl_AsyncReadComplete(AsyncProp As AsyncProperty)
   
   On Error Resume Next
   
   If AsyncProp.BytesMax <> 0 Then
       RaiseEvent DownloadError(AsyncProp.PropertyName)
       Exit Sub
   End If
   
   RaiseEvent DownloadComplete(CLng(AsyncProp.BytesMax), AsyncProp.PropertyName)

End Sub

Private Sub UserControl_AsyncReadProgress(AsyncProp As AsyncProperty)
   
   On Error Resume Next
   Dim Bytes() As Byte, File As Long
   
   ' Fortsett kun dersom segmentet er ferdig nedlastet
   If AsyncProp.BytesMax <> 0 Then
       
       File = FreeFile
       Bytes = AsyncProp.Value

       ' Skriv til fil
       Open AsyncProp.PropertyName For Binary Access Write As #File
           Put #File, AsyncProp.BytesRead + 1, Bytes
       Close #File
       
       ' Tøm buffer
       AsyncProp.Value = Null
       
       ' Fortell om hendelsen
       RaiseEvent DownloadProgress(CLng(AsyncProp.BytesRead), CLng(AsyncProp.BytesMax), AsyncProp.PropertyName)
   
   End If
   
End Sub

Public Sub BeginDownload(url As String, SaveFile As String)
   
   ' Slett fil dersom den allerede eksisterer
   If Dir(SaveFile) <> "" Then
       Kill SaveFile
   End If
   
   UserControl.AsyncRead url, vbAsyncTypeByteArray, SaveFile, vbAsyncReadForceUpdate

End Sub

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...