AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi idHttp Komponente ignoriert mein ContentRange
Thema durchsuchen
Ansicht
Themen-Optionen

idHttp Komponente ignoriert mein ContentRange

Ein Thema von gsh · begonnen am 16. Mär 2007 · letzter Beitrag vom 18. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#1

idHttp Komponente ignoriert mein ContentRange

  Alt 16. Mär 2007, 14:01
Hi DPler

Ich hab in leztzer Zeit Probleme mit der idHTTP komponente von den indys und zwar mit ContentRange
Delphi-Quellcode:
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);
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)
Warum macht die Komponente das?

Ich verwende den Code bei vielen anderen Porjekten und dort funktioniert alles ohne probleme
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von SubData
SubData

Registriert seit: 14. Sep 2004
Ort: Stuhr
1.078 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 16. Mär 2007, 15:26
Der Server muss das auch unterstützen...
Ronny
/(bb|[^b]{2})/
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 16. Mär 2007, 18:16
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
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#4

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 17. Mär 2007, 10:56
*noch oben schieb*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#5

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 18. Mär 2007, 18:08
*push*
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 31. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#6

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 18. Mär 2007, 18:29
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...

Viele Grüße,
Chris
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#7

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 18. Mär 2007, 18:44
ja des hab ich ja sonst könnte er ja gar nichts machen aber er lädt einfach immer die komplette datei
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;
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 31. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#8

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 18. Mär 2007, 18:50
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
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#9

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 18. Mär 2007, 19:05
Zitat von CK_CK:
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...
hä?
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.
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
Benutzerbild von CK_CK
CK_CK

Registriert seit: 31. Aug 2005
Ort: Dortmund, Germany
388 Beiträge
 
Delphi 2006 Enterprise
 
#10

Re: idHttp Komponente ignoriert mein ContentRange

  Alt 18. Mär 2007, 20:19
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:
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
Das ContentRangeXXX kannst du komplett weglassen...

Warum das so ist steht [HIER]... (Aber der Code dort ist auch falsch. Man muss das "bytes=" weglassen.)

Einen schönen Abend noch,
Chris
Chris
» «
Mehr von mir (Programme, etc.): http://www.kroegerama.de
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz