Lebenslauf HTTP-Post - /upload mit Indy

Ich versuche, die Wiederaufnahme einer upload mit indy (HTTP Post), der code sieht so aus (mit Delphi 2010, Indy 10.4736):

 IdHttp.Head('http://localhost/_tests/resume/large-file.bin');
 ByteRange           := IdHttp.Response.ContentLength + 1;

 // Attach the file to post/upload
 Stream              := TIdMultipartFormDataStream.Create;
 with Stream.AddFile('upload_file', 'D:\large-file.bin', 'application/octet-stream') do
 begin
      HeaderCharset  := 'utf-8';
      HeaderEncoding := '8';
 end;    // with

 with IdHTTP do
 begin
      IOHandler.LargeStream           := True;

      with Request do
      begin
           ContentRangeStart          := ByteRange;
           ContentRangeEnd            := (Stream.Size - ByteRange);
           ContentLength              := ContentRangeEnd;
           ContentRangeInstanceLength := ContentLength;
      end;    // with

      Post('http://localhost/_tests/resume/t1.php', Stream);
 end;    // with

aber laden fortsetzen funktioniert nicht 🙁

Schaute ich in Indy ' s code, es scheint, dass diese Funktion in IdIOHandler.pas

TIdIOHandler.Write()

immer mit kompletten streams/Dateien (da der parameter ASize: TIdStreamSize scheint immer 0, die nach dem Strafgesetz bedeutet, dass das senden der vollständigen Datei/stream).

Dies verhindert, dass indy von der Wiederaufnahme der upload.

Meine Frage ist: ist es möglich zu verhindern, dass die vollständige Datei?

Einstellung content Bereich nichts verändert. Ich habe auch gezwickt indy-code (modifiziert 3 Linien), um indy zu gehorchen, um den Inhalt Palette /stream position, aber es ist buggy und indy immer am Ende hängen in IdStackWindows.pas, weil ein unendliches timeout hier:

TIdSocketListWindows.FDSelect()

  • Sollten Sie verwenden PUT für, die.
  • Hier ist, was remy lebeau sagte über put
  • Keine Ahnung, vermutlich hat er Gespräche über PHP4. Aber ja, deine Wünsche sind nicht kompatibel mit der POST.
  • Die Wiederaufnahme der Dateien ist nicht kompatibel mit PUT. Ich sagte so viel, POST, auf der anderen Seite, ist nur beliebige Daten. Das empfangende Skript entscheidet, was zu tun mit den Daten, also es könnte theoretisch verwendet werden, für die Wiederaufnahme. In der Praxis selten ist.
InformationsquelleAutor TheDude | 2012-03-07
Schreibe einen Kommentar