Upload auf den Server funktionert nicht (Dateien werden nicht Kopiert)

Flashede

Grünschnabel
Hallo,
ich habe das Problem, dass die hochgeladene Datei auf den Server ncit finden (bzw. nicht in den Ordner Kopiert wird). Kann mir jemand sagen oder helfen wo da bei mir der Fehler liegt. :(

Hier sind die Scripte

form.php

PHP:
<form id="form" name="form" action="selbstauskunft_senden.php" method="post" enctype="multipart/form-data">   
<input type="file" name="datei" id="datei" size="20" maxlength="100000" />

                    <?php
					//Dateiinformation (Ausgabe über Schleife)
					if (isset($_FILES["datei"])) {
							foreach ($_FILES["datei"] as $key=>$element) {
								echo "[$key] => $element<br>";
							}
					} // End if
					?>

<input type="submit" name="Selbstauskunft absenden" value="Selbstauskunft absenden" /> 
</form>



selbstauskunft_senden.php

PHP:
<?php

//-----------------------------//
//  upload ueberprüfen   //
//-----------------------------//

$tempdir = $_FILES['datei']['temp_dir']; 
$temp_name = $_FILES['datei']['tmp_name'];  
$file_name = $_FILES['datei']['name'];

// Prüfen des Array $_FILES
if  (isset($_FILES["datei"])) {

// Upload-Status
if  ($_FILES["datei"]["error"] == UPLOAD_ERR_OK) {

// Muster zur Überprüfung der Dateinamen
// enthaltenen Zeichen (Optional)
$regExp = "/^[a-z_]([a-z0-9_-]*\.?[a-z0-9_-])*\.[a-z]{3,4}$/i";

//Dateinmame und Dateigrösse
if (preg_match($regExp,$_FILES["datei"]["name"]) && $_FILES["datei"]["size"] > 0 && $_FILES["datei"]["size"] < 100000) {
	// Temporäre Datei in das Zielverzeichnis des Servers legen
	move_uploaded_file($_FILES["datei"]["temp_name"],"upload/".$_FILES["datei"]["name"]);
	copy($tmp_name, "file/" . $file_name);
	
	// bestädigung Upload
	echo "Datei Erfogreich Hochgeladen!"; 
} else {
	echo "Fehler: Im Dateinamen oder Dateigroessen Limit!";
}
} else {
	echo "Fehler: Waerend der Übertragung aufgetreten!";
}
} else {
	echo "Fehler: Datei-Upload Fehlgeschlagen!";
}
?>


habe auch die dementsprechenden Ordner wo die Datei gespeichert werden soll angelegt.

trotzdem ist der der demensprechende Ornder leer.

Ich verstehe das nicht warum das nicht funktioniert:

Bitte helft mir, für anwortern danke im vorraus

Gruss Flashede
 
Bei move_uploaded_file $_FILES["datei"]["temp_name"] zu $_FILES["datei"]["tmp_name"] ändern. Das ist jetzt so das erste, was mir aufgefallen ist. Das Copy ist meines Erachtens auch überflüssig.
 
danke für die schnelle antwort,

meinst du das so

PHP:
move_uploaded_file($_FILES["datei"]["temp_name"],"upload/".$_FILES["datei"]["tmp_name"]);
 
Nene, der zweite Parameter war schon in Ordnung. Schau dir mal den ersten an: Der zweite Index vom $_FILES-Array muss tmp_name heißen statt "temp_name", so wie du es dort stehen hast.
 
Drücke ich mich echt so undeutlich aus? :(

PHP:
move_uploaded_file($_FILES["datei"]["tmp_name"], "upload/".$_FILES["datei"]["name"]);
 
so er haut es in den upload ordner rein, habe es nur nicht über mein arbeitsplatz gesehen (mit filezila wird die datei angezeigt).

Gibt es möglichkeiten auf den upload-ordner zugreifen und dann den inhalt auszulesen und dann als link in in ein phpmailer zu verfrachten.
 
Mahlzeit,

ja, gibt es. Die Fragen, die sich stellen sind: Nur die gerade hochgeladene Datei oder alle? Wer soll den Link bekommen?

Das folgende Script habe ich mal für das Auslesen und Dartsellen aller Bilder eines Ordners geschrieben, sollte also auch analog zum Auslesen beliebiger Dateien funktionieren:
PHP:
$ordner="pfad/zum/ordner";
// Bild-Verzeichnis einlesesn
if(is_dir($ordner)) {
	$d = dir($ordner);
	while (false !== ($entry = $d->read())) {
		if($entry != "." && $entry!= "..") {
			$arr_singlepics[]=$entry;									
		}
	}
	$d->close();
	foreach($arr_singlepics as $picname) {
		echo '<div id="singlepic">';
		echo '<a href="'.$ordner.'/'.$picname.'"><img src="'.$ordner.'/'.$picname.'" border="0"></a>';
		echo '</div>';
	}
}
Anstelle der "echo"s baust Du Dir nur den Link aus den Namen zusammen.

Wenn Du Dateien beliebiger Art hochladen lassen willst, solltest Du Dir aber sehr intensive Gedanken über die Sicherheit machen. Wäre ansonsten ja kein Problem, Dir eine x-beliebige php hochzuladen und dann auszuführen. Lösungsansätze=> z.B. .htaccess oder zumindest nur das Hochladen bestimmter Dateien zu unterstützen (oder auszuschließen).

Greetz
cw
 
Zurück