![]() |
idHttp Komponente ignoriert mein ContentRange
Hi DPler
Ich hab in leztzer Zeit Probleme mit der idHTTP komponente von den indys und zwar mit ContentRange
Delphi-Quellcode:
Bei diesem Codestück setzt er ContentRangeStart und ContentRangeEnd. Aber die idHttp ignoriert des einfach und ladet immer die komplette datei herunter (und des dann mehrere male weil des ja in einer schleife ist)
IdHTTP.Request.ContentRangeStart := BytePosition;
if (DownloadFileList[I].ByteSize-BytePosition) > cFileSplitSize then begin IdHTTP.Request.ContentRangeEnd := BytePosition+cFileSplitSize-1; end else IdHTTP.Request.ContentRangeEnd := DownloadFileList[I].ByteSize; IdHTTP.Get(cServerAdresse+DownloadFileList[I].ListItem.Caption, FileStream); Warum macht die Komponente das? :wall: Ich verwende den Code bei vielen anderen Porjekten und dort funktioniert alles ohne probleme :wiejetzt: |
Re: idHttp Komponente ignoriert mein ContentRange
Der Server muss das auch unterstützen...
|
Re: idHttp Komponente ignoriert mein ContentRange
am server liegt es sicher nicht, weil ich hab des es auf zwei ganz verschieden Server getestet und einer davon ist meiner (und bei dem ist es sicher aktiviert)
die anderen programme von mir funken ja auch ohne prob. mit dem server |
Re: idHttp Komponente ignoriert mein ContentRange
*noch oben schieb*
|
Re: idHttp Komponente ignoriert mein ContentRange
*push* :duck:
|
Re: idHttp Komponente ignoriert mein ContentRange
Zeig' mal mehr Code bitte ;)
Du lädst das ja in einen FileStream, oder? Dann musst du auch beim Create des Streams statt "fmCreate" "fmOpenReadWrite" als Flag verwenden... :stupid: Viele Grüße, Chris |
Re: idHttp Komponente ignoriert mein ContentRange
ja des hab ich ja sonst könnte er ja gar nichts machen aber er lädt einfach immer die komplette datei :wall:
k hier ist der ganze code was aber wahrscheinlich nicht sehr viel bringt
Delphi-Quellcode:
BytePosition := 0;
FileStream := TFileStream.Create(ExtractFilePath(ParamStr(0))+cTempUpdateDir+DownloadFileList[I].ListItem.Caption, fmCreate or fmShareExclusive); try repeat IdHTTP.Request.ContentRangeStart := BytePosition; if (DownloadFileList[I].ByteSize-BytePosition) > cFileSplitSize then begin IdHTTP.Request.ContentRangeEnd := BytePosition+cFileSplitSize-1; end else IdHTTP.Request.ContentRangeEnd := DownloadFileList[I].ByteSize; IdHTTP.Get(cServerAdresse+DownloadFileList[I].ListItem.Caption, FileStream); BytePosition := BytePosition+cFileSplitSize; Application.ProcessMessages; until (BytePosition >= DownloadFileList[I].ByteSize); finally FreeAndNil(FileStream); end; |
Re: idHttp Komponente ignoriert mein ContentRange
Wie ich's vermutet hab': Du benutzt "fmCreate".
Dadurch wird die Datei vorm schreiben komplett geleert. Du musst fmOpenReadWrite verwenden. Dadurch wird der Inhalt nicht gelöscht und die Http-Komponente kann an der passenden Stelle anfangen zu laden. Du musst dann aber auch prüfen, ob die Datei noch nicht existiert. Dann muss es nämlich trotzdem fmCreate sein... Viele Grüße, Chris |
Re: idHttp Komponente ignoriert mein ContentRange
Zitat:
Die Datei soll ja gelöscht werden wenn sie exestiert. Der Filestream wird ja vor dem download angelegt und dort soll dann die http komponente mit jedem druchlauf der schleife 20kb in die Datei schreiben. aber statt den mit ContentRange vorgegebenen 20 kb saugt die komponente ALLES (also 596 kb) und zwar saugt sie bei jedem durchlauf die kompletten 596KB und nicht 20KB also kommt am schluss einen 10 MB exe raus. :wall: |
Re: idHttp Komponente ignoriert mein ContentRange
Sorry, ich hatte da was falsch verstanden ;)
Aber ich hab' die Lösung, da ich gemerkt habe, dass es bei mir auch nicht funktioniert. Du musst folgendes schreiben:
Delphi-Quellcode:
Das ContentRangeXXX kannst du komplett weglassen...
IdHttp.Request.Range := Format('%d-%d', [StartBytes, EndBytes]); //um alles von StartBytes bis EndBytes zu laden
//oder IdHttp.Request.Range := Format('%d-', [StartBytes]); //um alles ab StartBytes zu laden Warum das so ist steht ![]() Einen schönen Abend noch, Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz