Jag försöker ladda ner och spara en fil, men det verkar som att det blir nått fel på vägen, för det jag får ner är inte helt identiskt med det som finns på servern. Vad menar du med "inte helt identisk"? Om du testar med t.ex. en textfil, blir det någon synbar skillnad då? en gissning är ju antingen encoding problem, alternativt \n vs \r\n radbryt. Med inte helt identisk så menar jag att storleken på filen är rätt, men att den ändå inte går att köra (det är en exe-fil). Testar jag med en textfil så ser den helt korrekt ut. Genom Process.Start. Men problemet ligger i att filen inte kommer ner rätt. Gör man ett hash-värde av original-filen och den nerladdade så blir värdet inte lika. Borde väl rimligtvis vara en fråga om att säkerställa att den överförs binärt och inte i text-mode? Jag gjorde lite justeringar så att filen laddas ner (eller i alla fall läses) i bitar om 1024 bytes och det löste problemet.CF3.5: Ladda ner en fil
Jag använder den här koden:
<code>
Dim WRes As System.Net.WebResponse
Try
WRes = WReq.GetResponse
Catch WebEx As System.Net.WebException
'Felhantering
End Try
Dim S As System.IO.Stream = WRes.GetResponseStream
Dim B(WRes.ContentLength - 1) As Byte
S.Read(B, 0, WRes.ContentLength)
Dim FS As New System.IO.FileStream("fil.exe", IO.FileMode.CreateNew, IO.FileAccess.Write)
FS.Write(B, 0, B.Length)
FS.Close()
S.Close()
</code>
Vad är fel?
/ThomasSv: CF3.5: Ladda ner en fil
/JohanSv: CF3.5: Ladda ner en fil
Men som sagt, "nåt fel" och "inte helt identiskt" är en något vag felbeskrivningSv:CF3.5: Ladda ner en fil
/ThomasSv:CF3.5: Ladda ner en fil
/ThomasSv: CF3.5: Ladda ner en fil
Sv: CF3.5: Ladda ner en fil
<code>
Dim WRes As System.Net.WebResponse
Try
WRes = WReq.GetResponse
Catch WebEx As System.Net.WebException
'Felhantering
End Try
Dim S As System.IO.Stream = WRes.GetResponseStream
Dim B(1024) As Byte
Dim BytesRead As Integer
Dim FS As New System.IO.FileStream("fil.exe", IO.FileMode.CreateNew, IO.FileAccess.Write)
BytesRead = S.Read(B, 0, B.Length)
FS.Write(B, 0, BytesRead)
Do While BytesRead > 0
BytesRead = S.Read(B, 0, B.Length)
FS.Write(B, 0, BytesRead)
Loop
FS.Close()
S.Close()
</code>
/Thomas