Gå til innhold

Laste ner filer fra internett


Anbefalte innlegg

Skrevet (endret)

Kossen kan eg lasta ner filer fra internet og samtidig vise progress?

 

filå eg ska lasta ner e:

http://www.freewebs.com/shortcutmanager/update

 

når eg laste ner version så går det greit, siden den e lite(3kb) men Update e ganske store..(1,5mb) så det går ganske treigt... någen ide? akkuratt nå bruke eg inet kontrollen...

Endret av Richard87
Videoannonse
Annonse
Skrevet

Du kan fint legge inn brukerkontrollen i prosjektet ditt uten noen form for problematikk, antar jeg. Det skulle ikke spille noen rolle.

  • 2 uker senere...
Skrevet

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)

Skrevet

Du sier ikke noe om hva som skjedde, men jeg regner med at du prøvde å legge hele filen i en variabel og fikk overflow-error?

 

Gjør som andre p2p-programmer - Legg alt i en buffer-fil.

Skrevet (endret)
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
Skrevet (endret)

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
Skrevet

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

Skrevet

hmm ,det var rart, jeg fikk en error melding hver gang jeg prøvde og sette AsyncProp.Value til 0, Null, vbNull, Nothing etc

 

error meldingen hvar "Object required"(el)

Skrevet
error meldingen hvar "Object required"(el)

AsyncProp.Value blir altså markert med feilmeldingen "Object required"? Benytter du AsyncProp As AsyncProperty øverst i prosedyredeklareringen til AsyncReadProgress?

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...