Der Martin: Deit upload

Beitrag lesen

Hallo,

<? php
if($_GET[action]){
	//phpinfo(INFO_VARIABLES);

	$dateiName = "import.csv";
	$upload = $_POST[dateiName];
	echo $upload . "<br>";

		if(move_uploaded_file ( $upload , $dateiName )){
			echo "bin da<br>";
			$fp = fopen($dateiName,"r");

			while($line = fgetcsv($fp,3000,";")){
				echo "Paketnr: " . $line[15] . "<br> Lieferschein: " . $line[23] . "<br> Gewicht: " . $line[21] . "<hr>";
			}
		}
	} else {
?>
	<form name="DDimport" style="margin:20px;" action="ddImport.php?action= 1" method="post">

		<br>Importdatei wählen<br><br>
		<input type='file' name = 'dateiName' value= ' Durchsuchen ' align="absmiddle" accept="text/csv"><br>
		<input type='submit' value= 'importieren ' align="absmiddle" >
		</br>

	</form>

<? } ?>

Wo ist mein Denkfehler?

zusätzlich zu den Fehlern, die Rolf schon angesprochen hat: Eine gemischte Parameter-Übergabe (also teils per GET, teils per POST) ist zwar nicht per se verboten, aber nicht empfehlenswert, weil man so leicht den Überblick verliert. Besser ist es, den Parameter action in ein Hidden-Input zu legen und dann ebenfalls mit dem POST-Datenblock zu versenden (und auch als $_POST['action'] abzufragen).

Da die Upload-Daten nicht im $_POST-Array an PHP übermittelt werden, sondern in $_FILES, geht auch dein Zugriff auf $_POST['dateiName'] ins Leere und wirft eine Notice. Du hast doch während der Entwicklung hoffentlich das error_reporting auf E_ALL stehen?

Grundsätzlich wird eine hochgeladene Datei beim File-Upload im Temp-Verzeichnis des Servers abgelegt. Wo das genau ist, muss man als Script-Programmierer nicht wissen; move_uploaded_file() weiß es, wenn man die Datei dann an ihren endgültigen Ort verschiebt.

Live long and pros healthy,
 Martin

--
Paradox: Wieso heißen die Dinger Kühlkörper, obwohl sie höllisch heiß werden?