Hans: Dateiupload geht, jedoch 0kb auf dem Server

Hallo,

hab mir ein script gemacht:

$quelldatei[1]=$HTTP_POST_VARS['bild1'];
$quelldatei[2]=$HTTP_POST_VARS['bild2'];
$quelldatei[3]=$HTTP_POST_VARS['bild3'];

$i=1;
  $quelldatei = $quelldatei[$i];
   print $zieldatei = "objekte/objekt".$objektnr."/bild".$i.".jpg";

if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {
      print "Konnte keinen Upload durchführen!";
   } else {
      print "Datei ".$quelldatei." erfolgreich hochgeladen.<br>";
   }

$i=2;
  $quelldatei = $quelldatei[$i];
   print $zieldatei = "../objekte/objekt".$objektnr."/bild".$i.".jpg";

if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {
      print "Konnte keinen Upload durchführen!";
   } else {
      print "Datei ".$quelldatei." erfolgreich hochgeladen.<br>";
   }

$i=3;
  $quelldatei = $quelldatei[$i];
   print $zieldatei = "../objekte/objekt".$objektnr."/bild".$i.".jpg";

if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {
      print "Konnte keinen Upload durchführen!";
   } else {
      print "Datei ".$quelldatei." erfolgreich hochgeladen.<br>";
   }

(also 3mal die gleiche Routine, hatte es vorher mit einer Schleife)
Die Datei wird angelegt, auch die Bestätigung auf dem S
$quelldatei[1]=$HTTP_POST_VARS['bild1'];
$quelldatei[2]=$HTTP_POST_VARS['bild2'];
$quelldatei[3]=$HTTP_POST_VARS['bild3'];

$i=1;
  $quelldatei = $quelldatei[$i];
   print $zieldatei = "objekte/objekt".$objektnr."/bild".$i.".jpg";

if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {
      print "Konnte keinen Upload durchführen!";
   } else {
      print "Datei ".$quelldatei." erfolgreich hochgeladen.<br>";
   }

$i=2;
  $quelldatei = $quelldatei[$i];
   print $zieldatei = "../objekte/objekt".$objektnr."/bild".$i.".jpg";

if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {
      print "Konnte keinen Upload durchführen!";
   } else {
      print "Datei ".$quelldatei." erfolgreich hochgeladen.<br>";
   }

$i=3;
  $quelldatei = $quelldatei[$i];
   print $zieldatei = "../objekte/objekt".$objektnr."/bild".$i.".jpg";

if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {
      print "Konnte keinen Upload durchführen!";
   } else {
      print "Datei ".$quelldatei." erfolgreich hochgeladen.<br>";
   }

(die Routine ist die Selbe, läuft aber 3mal ab)

Die Datei wird angelegt, jedoch ist sie nur 0kb groß, die Bestätigung wird ebenfalls ausgegeben.
Die Routine hatte ich vorher als Schleife laufen, das Problem ist da jedoch dasselbe.

Wieso wird der Inhalt nicht übertragen?

Danke,
Hans

  1. Hi,

    $quelldatei = $quelldatei[$i];

    Hier haust Du Dein Array kaputt, weil Du es mit seinem ersten Element überschreibst.

    $i=2;
      $quelldatei = $quelldatei[$i];

    Also ist hier gar kein Array mehr vorhanden

    Sei mal nicht so knickrig mit den Variablennamen - oder benutze jedes Mal $quelldatei[$i]

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  2. Moin!

    hab mir ein script gemacht:

    Fein. Beachte aber bitte:

    $quelldatei[1]=$HTTP_POST_VARS['bild1'];
    $quelldatei[2]=$HTTP_POST_VARS['bild2'];
    $quelldatei[3]=$HTTP_POST_VARS['bild3'];

    1. Verwende IMMER und AUSSCHLIESSLICH die Variablen $_GET, $_POST, $_FILES etc. für die Entgegennahme deiner Formulardaten. $HTTP_xxx_VARS sind veraltet.

    $i=1;
      $quelldatei = $quelldatei[$i];

    An dieser Stelle kracht es. Dein oben so sorgfältig angelegtes Array wird überschrieben! Bedenke: Gleicher Variablenname!

    Das heißt, dass Datei 2 und 3 scheitern müssen - auch wenn sich das nicht zwingend durch eine Fehlermeldung äußert.

    print $zieldatei = "objekte/objekt".$objektnr."/bild".$i.".jpg";

    if (!ftp_put($con, $zieldatei, $quelldatei, FTP_BINARY)) {

    Bist du sicher, dass in $quelldatei das drinsteht, was du brauchst? Du hast hier schließlich nur den DateiNAMEN - die Datei selbst befindet sich aber nicht auf deinem Server (auf dem das PHP-Skript läuft), sondern auf dem Rechner, auf dem du das Formular ausgefüllt hast. Insbesondere könnte die Pfadangabe zu der Datei fehlen.

    Wieso wird der Inhalt nicht übertragen?

    Offenbar findet ftp_put etwas, was erfolgreich übertragen werden konnte, aber leer ist. Dein Skript ist zumindest EXTREM fragwürdig, was deine Annahmen über existierende Dateien und Variableninhalte angeht.

    - Sven Rautenberg