![]() |
Datei Upload via Http.Post
Hallo!
Ich möchte folgendes Problem lösen: Eine lokale Datei auf einen Webserver hochladen. Testumgebung: D5 Prof, Indy 9.0.14, xampplight mit php 5.14. Per FTP klappt das alles. Aber manchmal muss ich auf das Http-Protokoll ausweichen. Habe versucht mich im Forum schlau zu machen, und verwende mittlerweile folgenden Delphi-Code:
Code:
Das zugeörige PHP-Script lautet:
procedure TForm1.Button1Click(Sender: TObject);
var Data: TIDMultiPartFormDataStream; begin Data := TIdMultiPartFormDataStream.Create; try Data.AddFile('archive', 'c:\temp\abc.zip', 'application/zip'); IdHTTP1.Request.ContentType := 'application/x-www-form-urlencoded'; Data.Position := 0; Memo1.Lines.Text := IdHTTP1.Post('http://localhost/upload.php', Data); finally Data.Free; end; end;
Code:
Wenn ich das Delphiprog. starte gibt das Php-Script zurück:
<?php
// In PHP earlier then 4.1.0, $HTTP_POST_FILES should be used instead of // $_FILES. In PHP earlier then 4.0.3, use copy() and is_uploaded_file() // instead of move_uploaded_file $uploaddir = 'tausch/'; $uploadfile = $uploaddir. $_FILES['archive']['tmp_name']; print "<pre>"; if (move_uploaded_file($_FILES['archive']['tmp_name'], $uploadfile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print_r($uploadfile); } ?>
Code:
Mit anderen Worten, die Datei wurde nicht auf den Server gespeichert.
<pre>Possible file upload attack! Here's some debugging info:
tausch/ Kann mir jemand helfen? |
Re: Datei Upload via Http.Post
Hi,
das erste Argument der Funktion move_uploaded_file() sollte besser $_FILES['archive']['tmp_name'] sein. Grüße vom marabu |
Re: Datei Upload via Http.Post
Danke für den Tip! Hab ich geändert - keine Veränderung.
|
Re: Datei Upload via Http.Post
Schau dir noch deine Variable uploadfile an - dort ist der gleiche Fehler: Muss ['name'] sein statt ['tmp_name'].
|
Re: Datei Upload via Http.Post
Habe ich geändert - keine Veränderung!
|
Re: Datei Upload via Http.Post
Keine Veränderung?
Wird immer noch ein leerer Namensteil in der Meldung ausgegeben? |
Re: Datei Upload via Http.Post
Ja, es wird immer noch
Zitat:
|
Re: Datei Upload via Http.Post
Ich habe dein Problem mit meinen Änderungen auf meinem Rechner nachgestellt - und es funktioniert. Allerdings gebe ich einen absoluten Verzeichnisnamen an und nicht "tausch/". Vielleicht ist ja das dein Fehler.
Grüße |
Re: Datei Upload via Http.Post
Habe einen absoluten Pfad gesetzt:
Delphi-Quellcode:
Jetzt kommt ein Parser-Error:
<?php
$uploaddir = 'c:\xampplite\htdocs\tausch\'; $uploadfile = $uploaddir. $_FILES['archive']['tmp_name']; print "<pre>"; if (move_uploaded_file($_FILES['archive']['tmp_name'], $uploadfile)) { print "File is valid, and was successfully uploaded. "; print "Here's some more debugging info:\n"; print_r($_FILES); } else { print "Possible file upload attack! Here's some debugging info:\n"; print_r($uploadfile); } ?>
Delphi-Quellcode:
:wall: [b]Parse error[/b]: parse error, unexpected T_STRING in [b]C:\xampplite\htdocs\upload.php[/b] on line [b]3[/b] Würdest Du bitte dein PHP-Script und die Delphi-Routine einmal posten? Danke für die Mühe! |
Re: Datei Upload via Http.Post
Kipp mal die Schrägstriche in uploaddir in die entgegengesetzte Richtung und achte endlich auf die richtigen Namen - dann sehen wir weiter.
Code:
Grüße
$uploaddir = 'c:/xampplite/htdocs/tausch/';
$uploadfile = $uploaddir. $_FILES['archive']['name']; print "<pre>"; if (move_uploaded_file($_FILES['archive']['tmp_name'], $uploadfile)) { ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 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-2025 by Thomas Breitkreuz