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:
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;
Das zugeörige PHP-Script lautet:
Code:
<?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);
}
?>
Wenn ich das Delphiprog. starte gibt das Php-Script zurück:
Code:
<pre>Possible file upload attack! Here's some debugging info:
tausch/
Mit anderen Worten, die Datei wurde nicht auf den Server gespeichert.
Kann mir jemand helfen?