[Delphi/PHP] Form post met multipart/form-data

Pagina: 1
Acties:
  • 162 views sinds 30-01-2008
  • Reageer

  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02-2025
Beste forumers,

Ik ben bezig met een activex component onder delphi om zeg maar zo'n foto-uploader te maken net als je hebt bij msn-communities. Nu ben ik bezig met het deel dat de bestanden upload naar de php pagina. Hij moet per file de foto & Omschrijving naar insertpic.php posten. Nu vond ik hier een mooi component voor van indy. Maar het werkt nog niet helemaal, zelfs de de demo ervoor niet.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
  ResponseStream: TMemoryStream;
  MultiPartFormDataStream: TMsMultiPartFormDataStream;
begin
  MultiPartFormDataStream := TMsMultiPartFormDataStream.Create;
  ResponseStream := TMemoryStream.Create;
  try
    IdHttp1.Request.ContentType := MultiPartFormDataStream.RequestContentType;
    MultiPartFormDataStream.AddFormField('PersonName', edtPersonName.Text);
    MultiPartFormDataStream.AddFormField('Description', edtDescription.Text);
    MultiPartFormDataStream.AddFile('upload', edtFile.Text, edtMIMEType.Text);
    { You must make sure you call this method *before* sending the stream }
    MultiPartFormDataStream.PrepareStreamForDispatch;
    MultiPartFormDataStream.Position := 0;
    ShowMessage(IdHTTP1.Post(edtHost.Text, MultiPartFormDataStream));
  finally
    MultiPartFormDataStream.Free;
    ResponseStream.Free;
  end;

Post ik het vanuit m'n browser, dan werkt het. DOe ik het met delphi code, werkt het NIET. Hier mijn php code:
code:
1
move_uploaded_file($upload, $TK_DOWNLOAD_DIR.$upload_name);

Als ik vanaf de browser post krijg ik dit in return als ik een print_r($HTTP_POST_FILES);
code:
1
2
3
4
5
6
7
8
9
10
11
Array
(
    [upload] => Array
      (
        [name] => 351010[1].gif
        [type] => image/gif
        [tmp_name] => E:\WINNT2\php281.tmp
        [size] => 7125
      )

)

en via delphi krijg ik dit:
code:
1
2
3
4
5
6
7
8
9
Array
(
    [upload] => Array
      (
        [name] => 351010[1].gif
        [type] => image/gif
      )

)

Heeft iemand enig idee waar dit aan kan liggen?

En nog iets, kan er gelijk wel bij, weet iemand hoe ik dan vanaf de html als ik het activex component aanroepen er een variable aan mee kan geven (voor het sessieid, zodat ik die mee kan posten?).

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Dat betekend dat de upload waarschijnlijk is mislukt. Aangezien er in de uploaded_file array geen verwijzing staat naar het tijdelijke bestand.

Mischien iets om naar te kijken... Waneer je een file upload moet er in het form ook altijd een filesize staan (oid, moet je ff op php.net kijken).. Mischien moet je die zelf nog ff toevoegen aan je geposte data.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Misschien kan je wel iets met sockets doen, bij de torry suite zit wel zo'n component daarvoor. Je kan met php socket connecties ontvangen, dus.....

  • chris
  • Registratie: September 2001
  • Laatst online: 11-03-2022
Misschien dat je ook hier wat mee kan, er staan componenten tussen voor interactie tussen delphi en cgi, dan moet het met php ook vast wel kunnen.

Zaterdag nog naar De Kroeg trouwens?

  • tom kuipers
  • Registratie: Juli 1999
  • Laatst online: 23-02-2025
mmm... zal eens naar de componentjes kijken. Had al wel bij torry gekeken, maar met m'n stomme kop had ik niet gezien dat er meer was dan HTTP...

ik post mijn vorderingen nog even.

Mat dev-null... idd de kroeg zaterdag, maar uit je e-mail adres kan ik niet opmaken wie je bent. Wil dit mysterieus iemand ff z'n naam geven???