AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datei Upload via Http.Post
Thema durchsuchen
Ansicht
Themen-Optionen

Datei Upload via Http.Post

Ein Thema von Blo · begonnen am 11. Nov 2006 · letzter Beitrag vom 12. Nov 2006
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#1

Datei Upload via Http.Post

  Alt 11. Nov 2006, 00:37
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?
Ulrich Blomeyer
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 12:25
Hi,

das erste Argument der Funktion move_uploaded_file() sollte besser $_FILES['archive']['tmp_name'] sein.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 12:44
Danke für den Tip! Hab ich geändert - keine Veränderung.
Ulrich Blomeyer
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 13:06
Schau dir noch deine Variable uploadfile an - dort ist der gleiche Fehler: Muss ['name'] sein statt ['tmp_name'].
  Mit Zitat antworten Zitat
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 13:44
Habe ich geändert - keine Veränderung!
Ulrich Blomeyer
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 13:47
Keine Veränderung?

Wird immer noch ein leerer Namensteil in der Meldung ausgegeben?
  Mit Zitat antworten Zitat
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 14:05
Ja, es wird immer noch
Zitat:
<pre>Possible file upload attack! Here's some debugging info:
tausch/
ausgegeben.
Ulrich Blomeyer
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 16:50
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
  Mit Zitat antworten Zitat
Benutzerbild von Blo
Blo

Registriert seit: 20. Feb 2005
Ort: Kaarst
90 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 18:23
Habe einen absoluten Pfad gesetzt:
Delphi-Quellcode:
<?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);
}

?>
Jetzt kommt ein Parser-Error:
Delphi-Quellcode:



[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!
Ulrich Blomeyer
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Datei Upload via Http.Post

  Alt 11. Nov 2006, 19:47
Kipp mal die Schrägstriche in uploaddir in die entgegengesetzte Richtung und achte endlich auf die richtigen Namen - dann sehen wir weiter.

Code:
$uploaddir = 'c:/xampplite/htdocs/tausch/';
$uploadfile = $uploaddir. $_FILES['archive']['name'];
print "<pre>";
if (move_uploaded_file($_FILES['archive']['tmp_name'], $uploadfile)) { 
...
Grüße
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz