Logischer Fehler oder wieso geht das nicht

stephandziurla

Erfahrenes Mitglied
Hallo! Ich habe eine Frage bzgl. des Hochladens von Dateien. Ich möchte bei einem selbstgebauten CMS die Möglichkeit haben, Dateien hochzuladen. Hierzu habe ich ein Formular erstellt, mit dem man Dateien auswählen kann, die dann zum Upload bereitgestellt werden. Das sieht so aus:
HTML:
<html>
  <head>
    <title>Formular</title>
	<script type="text/javascript">
      function go1()
      {
        document.a.b.click(); <!--"a" ist der form-tag Identifizierer "id" - muss für alle Funtkionen gleich sein, da nur ein Formular existiert-->
        document.a.c.value = document.a.b.value; <!--"a" dient für den Durchsuchen-Button selbst - dessen Information wird an das Textfeld namens "c" übergeben zur Ansicht des Pfades-->
      }    
	</script>
  </head>
  <body>
  
    <table border="0" cellpadding="0" cellspacing="0" height="100%" width="100%">
      <tr>
	    <td valign="middle" align="center"> 
          <form method="post" action="upload.php" id="a" name="a" enctype="multipart/form-data";>
            <input type="file" id="b" style="display:none"> <!--FUNKTION DIE DEN EXPLORER AUFRUFT-->
	        <input id="c" name="datei"> <!--TEXTFELD INDEM DER PFAD ANGEZEIGT WIRD-->
	        <input type="button" onclick="go1();" value="DATEI"> <!--BUTTON-->
	        <input type="submit" value="UPLOAD">
	      </form>
	    </td>
	  </tr>
    </table> 
	
  </body>
</html>
Wieso das jetzt in ner Tabelle ist und wieso da zusätzlich noch JS drin ist, ist erst einmal nebensächlich, denke ich - es soll so sein! ;)

Dann übergeb ich also das Ganze an die Datei "upload.php". Diese soll den Upload vollziehen. Programmiert hab ich das:
PHP:
<?php
  
  $suchedatei = strrpos($_POST["datei"],"\\");	
  $suchedatei += '1';
  $uploadgrafik = substr($_POST["datei"],$suchedatei);
			

  // Einloggen mit Benutzername und Kennwort
  $conn_id = ftp_connect("ftp.domain.de"); 
  $login_result = ftp_login($conn_id, "user", "pwd"); 

  ftp_pasv($conn_id, TRUE);

  //int ftp_put ( int ftp_stream, string remote_file, string local_file, int mode)
  ftp_chdir($conn_id, "/datei");
  ftp_put($conn_id, "$uploadgrafik", $_POST["datei"], FTP_BINARY);

  ftp_quit($conn_id);
  
  
  echo "der string im textfeld: ".$_POST["datei"];
  echo "<br>suchposition wo letztes\: ".($suchedatei-1);
  echo "<br>suchposition wo dateiname beginnt: ".$suchedatei;
  echo "<br>uploadgrafik: ".$uploadgrafik;
?>
Die in der form.php übergebene Datei soll in das Verzeichnis "/datei" von meiner lokalen Festplatte hochgeladen werden. Es funktioniert aber nicht - wieso :( :( :(
 
Hallo.
Ich weiß es nicht wirklich, aber vielleicht liegt es an deinem Script. Ich habe für den Datei upload dieses Script zum abspeichern!

PHP:
$upload_path = "PFAD_ZUM_ORDNER";
$tempname = FILES['Avatar_Local']['tmp_name'];
$name = FILES['Avatar_Local']['name'];
$type = FILES['Avatar_Local']['type'];
$size = FILES['Avatar_Local']['size'];
$image = FILES['Avatar_Local']['tmp_name'];
$test = getimagesize($image);
if ($test[0] > 100 && $test[1] > 100){
$err[] = "das Bild ist zu groß. Maximale Auflösung ist 100px * 100px";
}
if($type != "image/gif" && $type != "image/pjpeg") {
$err[] = "nur gif und jpeg Dateien dürfen hochgeladen werden.";
}
if($size > "30720") {
$err[] = "Die Datei welche du hochladen willst, ist zu gross!<br>Maximale Dateigrosse beträgt 30 KB!";
}
if(empty($err)) {
 
copy("$tempname", "$upload_path$name");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error)
echo "$error<br>";
}

FILES['Avatar_Local'] musst du dein Feldname schreiben, also FILES['FELDNAME'].
Der Rest sollte klar sein.

Probiers mal. Vielleicht hilfts.

mb fanste
 
Zuletzt bearbeitet:
Hm...also erstmal verstehe ich das Skript nicht - was meinst du mit den öfters genannten
PHP:
%4$s

Und wieso gibt es dann überhaupt die FTP-Funktionen, wenn man das eh nur mit dem "copy"-Befehl machen kann. Es muss doch möglich sein, dies ganz "standardgemäss" mit ftp_put() & co. zu machen, oder nicht
 
Da hats mir das Script verhuntst. Hab es erst geschrieben, dann markiert und auf den PHP Button geklickt. Dann hats des Script total versaut. Habs erst bemerkt als es schgon gesendet war :D
 
Müsste eigentlich gehen. Aber du musst die Datei glaube ich so ansprechen, wie in meinen Script beschrieben. Habs davor auch erst so wie du gehabt, da gings auch nicht.

Bei dateien musst du diese mit File ansprechen und nicht mit $_POST. glaub ich zumindest.

Nochwas. In dem Script, kann ein bisschen was weg, da dass mein Gallery Script ist. Ich denk mal du willst jede Datei hochladen könne
 
Zuletzt bearbeitet:
Bin schon dabei: hab das draus gemacht:
PHP:
<?
$upload_path = "/datei";
$tempname = FILES['datei']['tmp_name'];
$name = FILES['datei']['name'];
if(empty($err)) {

copy("$tempname", "$upload_path$name");
echo "Die Datei $name wurde erfolgreich hochgeladen!";
}
else {
foreach($err as $error)
echo "$error<br>";
} ?>

komischerweise nicht. Kommt ne Fehlermeldung:
Parse error: parse error, unexpected '[' in /kunden/upload.php on line 11
 
vll liegts daran, dass die datei falsch hochgeladen wird. du schreibst, das der pfad /datei ist. hintendran hängst du dann direkt den namen.
entweder du musst
/datei/
schreiben oder
copy("$tempname", "$upload_path.'/'.$name");

Bloß geraten :D
 
Nein doch nicht. vergiss es wieder. man soll halt immer zweimal schauen.
du musst $_FILES schreiben.

Das waren vorhin die vielen
%4$s
die mir das Forum irgendwie umgewandelt hat
.
 
Naja, das würde ja keinen Parse-Error hervorrufen...Man ich geh hier noch an die Decke...das wäre mein einziger Fehler in dem CMS, sonst funktioniert alles *heuuuuul*

Ist denn ein Upload, wo ich per Browser mittels eines Formulars eine Datei auswählen kann per FTP möglich? Weiß da jemand was? Ich hab da nämlich auch unterschiedliches gehört...
 
Zurück