[Delphi] Binary bestanden posten naar PHP-script

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pelleke
  • Registratie: Maart 2003
  • Laatst online: 08-11-2024

pelleke

Aut viam inveniam aut faciam

Topicstarter
Ik ben bezig met een CMS, en wil nu bestanden (zoals plaatjes, of andere bestanden) uploaden naar mijn webserver.

Dat uploaden mag niet via FTP, nee, er staat een PHP script die het afhandelt en opslaat in een MySQL DB. Daarin gebeurt iets als dit:
PHP:
1
2
3
4
5
6
7
8
9
//Voorafgaande is niet relevant
$content = $_POST['filecontent']; 
$filename = $_POST['name']; 
$filesize = $_POST['size']; 

$data = addslashes($content, $filesize); 

$sql = "insert into mytable (FileName,FileContent, FileSize) values ('$filename','$data','$FileSize')"; 
$result = mysql_query($sql);



Nu wil ik weten:

In mijn programma open ik een bestand (zoals bijvoorbeeld een .gif-bestand). Ik wil nu de inhoud van dat bestand 'posten' met een TIdHTTP, alleen:

1. Hoe open ik een file, en lees ik hem zo in dat ik hem makkelijk kan 'storen'
2. Hoe post ik de (binary) inhoud van de file met een TIdHTTP?

Ik heb het al met een string geprobeerd, maar dat werkt dus voor geen hout. Bovendien: als er instaat dat ie op een nieuwe regel begint, dan ziet 'Post' dat als een nieuwe variabele. Kan iemand mij zeggen hoe het wel moet?

Acties:
  • 0 Henk 'm!

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

1) Met een Stream. TStream of een afgeleide zoals TFileStream of TMemoryStream.
2) TIdHTTP heeft verschillende functies zoals Post en Put en die hebben beide een geoverloade versie waarbij je de gegevens via een parameter ASource: TStream mee kan sturen.

Delphi:
1
2
3
4
5
6
7
8
9
var F: TFileStream;
begin
  F := TFileStream.Create('Bestand.exe', fmOpenRead);
  try
    Result := IdHTTP1.Post('http://someurl.nl', F);
  finally
    F.Free;
  end;
end;

We adore chaos because we like to restore order - M.C. Escher


Acties:
  • 0 Henk 'm!

  • pelleke
  • Registratie: Maart 2003
  • Laatst online: 08-11-2024

pelleke

Aut viam inveniam aut faciam

Topicstarter
Dit is dubbel werk, toch Lord Larry? :)

M.a.w.: Hij kan dicht. En voor diegenen die ook de oplossing nog willen weten:

code:
1
2
3
4
5
6
7
8
9
var F: TFileStream;
begin
  F := TFileStream.Create('Bestand.exe', fmOpenRead);
  try
    Result := IdHTTP1.Post('http://someurl.nl', F);
  finally
    F.Free;
  end;
end;


Dank je wel.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:36

Creepy

Tactical Espionage Splatterer

pelleke schreef op 14 december 2003 @ 22:40:
Dit is dubbel werk, toch Lord Larry? :)
Huh? wat bedoel je?
M.a.w.: Hij kan dicht. En voor diegenen die ook de oplossing nog willen weten:

code:
1
2
3
4
5
6
7
8
9
var F: TFileStream;
begin
  F := TFileStream.Create('Bestand.exe', fmOpenRead);
  try
    Result := IdHTTP1.Post('http://someurl.nl', F);
  finally
    F.Free;
  end;
end;
Eh... dit is precies wat LordLarry net poste? Of ben ik scheel aan het worden?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney