![]() |
idHTTP: MemoryStream POSTen
Ich hab jetzt schon ne Weile hier gesucht und nix brauchbares gefunden, es kann doch nicht so schwer sein :wall:
Ich will ein paar SQL-Befehle an ein Skript schicken (ca 900 kB auf einmal) und hab die in nem MemoryStream. Ich muss da ja noch irgendwie den Namen des Feldes (textarea) angeben damit das Skript was mit den Daten anfangen kann. Einfach 'sql_query=' davor funzt nicht... |
Re: idHTTP: MemoryStream POSTen
Keiner ne Ahnung?
Hier mal mein Code, aber der wird auch nicht mehr sagen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Stream1, Stream2: TMemoryStream; Start, Laenge, i: Integer; Fil: string; begin if OpenDialog1.Execute then begin Stream1 := TMemoryStream.Create; Stream2 := TMemoryStream.Create; Stream1.LoadFromFile(OpenDialog1.FileName); SetLength(Fil, Stream1.Size); Stream1.Read(PChar(Fil)^, Stream1.Size); Start := 1; i := 0; // while Start < Stream1.Size do // zum debuggen auskommentiert, geht schneller so ;) begin Inc(i); Form1.Caption := IntToStr(i) + '/' + IntToStr(Round(Stream1.Size / 921600)); if Start + 921600 > Stream1.Size then Laenge := Stream1.Size - Start else begin Laenge := 921603 + Pos(';', PChar(Fil) + Start + 921600); if Start + Laenge > Stream1.Size then Laenge := Stream1.Size - Start; end; Stream2.Clear; Stream2.Write('lang=de-utf-8'#13#10'server=1'#13#10'collation_connection=utf8_general_ci'#13#10'goto=db_details.php'#13#10'show_query=0'#13#10'sql_query=', 104); Stream2.Write(Fil[Start], Laenge); if CheckBox1.Checked then begin IdHTTP1.Request.Username := Edit2.Text; IdHTTP1.Request.Password := Edit3.Text; Stream1.Clear; IdHTTP1.Post(Edit1.Text + 'read_dump.php', Stream2, Stream1); // Stream1.SaveToFile('test.htm'); // Stream1 wird zum debuggen für die Ausgabe missbraucht end else Stream2.SaveToFile(Copy(OpenDialog1.FileName, 0, length(OpenDialog1.FileName) - length(ExtractFileExt(OpenDialog1.FileName))) + ' ' + IntToStr(i) + '.sql'); Start := Start + Laenge; end; Form1.Caption := 'fertig'; end; end; |
Re: idHTTP: MemoryStream POSTen
Guck dir mal den IdStreamVCL an oder besser gesagt such mal danach im Forum. Da stößt du sicherlich auch ein Beispiel mit dem man Dateien über genannten Stream verschickt.
Dabei wird der Inhalt des FileStreams in den IdSTreamVCL eingelesen. Statt eines FileStreams kannst du natürlich auch einfach deinen MemoryStream einlesen lassen. Florian |
Re: idHTTP: MemoryStream POSTen
Hm, so viel gibts da im Forum auch nicht...
Delphi-Quellcode:
Post mag den TIdStreamVCL nicht da inkompatibel zu TStream :(
IdHTTP1.Post(Edit1.Text + 'read_dump.php', TIdStreamVCL.Create(Stream2, true), Stream1);
Für was braucht man denn überhaupt ne andere Art von Stream? |
Re: idHTTP: MemoryStream POSTen
*push*
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:26 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 by Thomas Breitkreuz