Upload-Funktion macht Probleme

hab1cht

Erfahrenes Mitglied
Hi,
habe mir ein Uploadscript gebastelt, hat auch super funktioniert, da ich es allerdings auch auf anderern Seiten verwenden will, habe ich das ganze zu einer Funktion umgebaut, der man nur den Namen des File-Feldes mitgeben muss.
Hier der Code:
PHP:
<?php
echo $error;

function img_upload($name){

// Absuluter Pfad zum Speicher Ordner
	$img_path_up = '/xampp/xampp/htdocs/hab_ich_dich/new/';
// Maximal Datei Größe in KB (KiloByte) 
	$groessemax = 10000;

if(file_exists($img_path_up)==false OR $img_path_up ==''){
	$error = 'Es gibt kein Ordner wohin die Bilder geladen werden sollen!';
	exit;

}

	$filename = ""; 
	if ($HTTP_POST_FILES['$name']['tmp_name']<> 'none'){    
		$file = $HTTP_POST_FILES['$name']['name']; 
		$temp = $HTTP_POST_FILES['$name']['tmp_name']; 
		$path_parts = pathinfo($file); 
		$filename = basename($HTTP_POST_FILES['$name']['name']); 
		if($HTTP_POST_FILES['$name']['size'] <= $groessemax*1024){
			if(decoct(fileperms($img_path_up))==40777){
				if(@copy($temp, $img_path_up.$filename)){ 
					$error = false;
				} else {
					$error = 'Die Datei konnte nicht auf den Server geladen werden.';
				}
			} else {
				$error = 'Der Upload Ordner hat keine Schreibrechte!';
			}
		} else {
			$error = 'Die Datei ist zu groß! Die Datei darf nicht größer als '.$groessemax.' KB (KiloByte) sein.';
		}
	}
return $HTTP_POST_FILES['$name']['name'];
}


$res = img_upload("userfile");
echo $res;
?>
<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"> 
<br><strong>File Upload</strong><br><br> 
<input name="userfile" type="file" size=40><br><br> 
<input type="submit" name="uploads" value="Speichern"> 
</form>

Allerdings macht er gar nichts.
Ich glaube das liegt daran dass er nicht auf die Variable $HTTP_POST_FILES zugreifen kann, habe schon versucht mit
PHP:
global $HTTP_POST_FILES;
hat aber nichts genützt.

Also hat jmd eine Idee?

Vielen Dank im Voraus

mfg
hab1cht
 
Hallo,

nachdem du das Formular abgeschickt hast, steht dir die Variable $_FILES zur Verfügung.
Sie beinhaltet alles was du über das Image wissen musst.

ssurfer
 
Ersetze mal das exit; durch return false;, damit nicht das gesamte Skript abgebrochen sondern nur die Funktion verlassen wird.
 
Hilft alles nichts.....

Hier mal der Code bevor ich es zu einer Funktion umgebaut habe, so funktioniert auch alles:
PHP:
<?php
// Absuluter Pfad zum Speicher Ordner
	$img_path_up = '/xampp/xampp/htdocs/hab_ich_dich/new/';
// Maximal Datei Größe in KB (KiloByte) 
	$groessemax = 10000;

if(file_exists($img_path_up)==false OR $img_path_up ==''){
	$error .= 'Es gibt kein Ordner wohin die Bilder geladen werden sollen!';
	return false;

}
if($action){
	$filename = ""; 
	if ($HTTP_POST_FILES['userfile']['tmp_name']<> 'none'){    
		$file = $HTTP_POST_FILES['userfile']['name']; 
		$temp = $HTTP_POST_FILES['userfile']['tmp_name']; 
		$path_parts = pathinfo($file); 
		$filename = basename($HTTP_POST_FILES['userfile']['name']); 
		if($HTTP_POST_FILES['userfile']['size'] <= $groessemax*1024){
			if(decoct(fileperms($img_path_up))==40777){
				if(@copy($temp, $img_path_up.$filename)){ 
					header("Location: test.php");
				} else {
					$error .= 'Die Datei konnte nicht auf den Server geladen werden.';
				}
			} else {
				$error .= 'Der Upload Ordner hat keine Schreibrechte!';
			}
		} else {
			$error .= 'Die Datei ist zu groß! Die Datei darf nicht größer als '.$groessemax.' KB (KiloByte) sein.';
		}
	}
echo $error;
} else { 
?> 
	<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"> 
	<br><strong>File Upload</strong><br><br> 
	<input name="userfile" type="file" size=40><br><br> 
	<input type="submit" name="action" value="Speichern"> 
	</form>
<? } ?>

Kann daraus jetzt jemand eine Funktion machen? Der Funktion sollte der Name des File-Feldes übergeben werden (in diesem Beispiel also "userfile")

MfG
hab1cht
 
also es liegt ziemlich sicher daran, dass ich nicht auf $HTTP_POST_FILES zugreifen darf, da $file, $filename, $temp .. alle leer sind.

Wie mache ich $HTTP_POST_FILES "global"?

mfg
hab1cht
 
Die $HTTP_POST_FILES-Variable ist bereits superglobal. Du solltest auch lieber mit der $_FILES-Variable arbeiten.
 
Sodele, habe alles durch $_FILES ersetzt, hat aber nichts gebracht die Fehlermeldung bleibt: "Die Datei konnte nicht auf den Server geladen werden."

Hier noch mal der neueste Code:
PHP:
<?php

function img_upload($name){

// Absuluter Pfad zum Speicher Ordner
	$img_path_up = '/xampp/xampp/htdocs/hab_ich_dich/new/';
// Maximal Datei Größe in KB (KiloByte) 
	$groessemax = 10000;

if(file_exists($img_path_up)==false OR $img_path_up ==''){
	$error = 'Es gibt kein Ordner wohin die Bilder geladen werden sollen!';
	return false;

}

	$filename = ""; 
	if ($_FILES['$name']['tmp_name']<> 'none'){    
		$file = $_FILES['$name']['name']; 
		$temp = $_FILES['$name']['tmp_name']; 
		$filename = $_FILES['$name']['name']; 
		if($_FILES['$name']['size'] <= $groessemax*1024){
			if(decoct(fileperms($img_path_up))==40777){
				if(move_uploaded_file($temp, $img_path_up.$filename)){ 
					$error = false;
				} else {
					return $error = 'Die Datei konnte nicht auf den Server geladen werden.';
				}
			} else {
				return $error = 'Der Upload Ordner hat keine Schreibrechte!';
			}
		} else {
			return $error = 'Die Datei ist zu groß! Die Datei darf nicht größer als '.$groessemax.' KB (KiloByte) sein.';
		}
	}
return $filename;
}

if(isset($_POST['action'])){
	echo img_upload("userfile");
}
else{
?>

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"> 
<br><strong>File Upload</strong><br><br> 
<input name="userfile" type="file" size=40><br><br> 
<input type="submit" name="action" value="Speichern"> 
</form>

<?php
}
?>

Hat noch jmd eine Idee?
Vielen Dank schon mal.

MfG
hab1cht
 
PHP:
$_FILES['$name']['tmp_name']

Kann nicht funktionieren.

Entweder es ist $_FILES[$name] oder $_FILES["name"] denn bei einfachen Anführungsstrichen wird die Variable $name nicht geladen.
 
A natürlich mann bin ich blöd, diese scheiss einfachen Anführungszeichen, das fällt mir nie auf...
danke

mfg
hab1cht
 
Zurück