Hilfe bei einfachem Upload

savior01

Mitglied
Liebe Leute,
Ich versuche gerade ein einfaches Uplodscript zu installieren, womit ich meine privaten
Files in einen geschützten Bereich zu laden:
---------------------------------------------------
Ordnersruktur
../save/upload.php
../save/upload/ --für dei Dateien
--------------------------------------------------
Quellcode:
--------------------------------------------------
<!---------upload anfang---------->
<?
if ($senden) {
$pfad = "../upload";
$sizeabfrage = "yes";
$size = "5000000";

$body="<html><body bgcolor=#FFFFFF text=#000000>";
if ($file_name == " ") {
echo $body;
die("Keine Datei gewählt.");
}
if (file_exists("$pfad/$file_name")) {
die($body."Datei bereits vorhanden.");
}
if ($sizeabfrage == "yes") {
if ($file_size > $size) {
echo $body;
die("Die Datei ist zu groß !");
}
}

$upload = "$file_name";
@copy($file, "$pfad/$upload") or die($body."Datei wurde nicht hochgeladen.");
echo $body;
echo "Datei hochgeladen";
}
else {
?>
<!---------upload ende ---------->
<form action="<?php $PHP_SELF; ?>"method="post" enctype="multipart/form-data">
<p>Bitte Datei auswählen:<br>
<input type="file" name="file">
<p><input type="submit" name="Hochladen"
style="background-color: #FEEBC5 ; font-family : arial; color : #000000; font-size : 12px;" value="Hochladen">
</form>
<?
}
?>
--------------------------------------------------
Funktioniert nicht ich habe unzählige versionen probiert,
keine Ideen mehr..........

-------------------------------------------------
Vielen Dank für Eure Hilfe!
 
Hat das Verzeichnis die Rechte 777?


Das hier ist mein Script
PHP:
	<form action="" method="post" enctype="multipart/form-data">
		<b>Bitte Datei auswählen</b>:					<br />
		<input type="file" name="userfile" />			<br />
		<input type="hidden" name="check_machine" />	<br />
		<input type="submit" name="upload" value="Hochladen" />
	</form>

	<?php
		if((isset($_POST['upload'])) && (empty($_POST['check_machine']))) {
			// Variablen für Datei
			$n					= "\n";
			$inputname			= 'userfile';		# Gibt den Namen des Inputs an
			$filename			= $_FILES[$inputname]['name'];		# Name der Datei auf PC
			$tempname			= $_FILES[$inputname]['tmp_name'];	# Name des Ursprungsverzeichnisses
			$uploaddir			= 'upload/';							# Verzeichnis zum hochladen (chmod = 777)

			// Dateinamen beschneiden
			$search				= array();
 			$search[]			= '/ /';
			$search[]			= '/ä/';
			$search[]			= '/ö/';
			$search[]			= '/ü/';

			$replace			= array();
			$replace[]			= '_';
			$replace[]			= 'ae';
			$replace[]			= 'oe';
			$replace[]			= 'ue';
			$filename			= preg_replace($search, $replace, $filename);

			$datum				= date('d.m.Y_H:i');				# Datum (Ende der Datei);
			$new_filename	   .= $datum.'_'.$filename;				# Neuer Dateiname
		

			// Hochladen
			if(move_uploaded_file($tempname, $uploaddir . $new_filename)) {
				echo 'Die Datei wurde erfolgreich hochgeladen.'.$n;
				echo '<br />'.$n;
				echo 'Klicke <a href="'.$uploaddir.'/'.$new_filename.'" target="_blank">hier</a> um die Datei anzusehen!'.$n;
				echo '<br />'.$n;
				echo 'Klicke <a href="index.php">hier</a>, um noch zum Index zurück zu kehren!'.$n;
			} else {
				echo 'Die Datei konnte nicht hochgeladen werden'.$n;
				echo '<br />'.$n;
				echo '<a href="'.$_SERVER['PHP_SELF'].'">Zurück</a>'.$n;
			}
		}
	?>
 
Ein Upload steht erstmal grundsätzlich in der PHP-eigenen Variable "$_FILES", welche ein Array ist.

Hier mal ein ganz einfache Upload-Funktion, nachdem das Formular gesendet wurde:
PHP:
<?

$pfad = "../upload"; 

if( isset($_POST['file']) ) { // Formular wurde gesendet
  if( isset($_FILES['file']['tmp_name']) ) {// Temporaere Datei wurde angelegt (Upload erfolgreich)
    $tmpname = $_FILES['file']['tmp_name'];
    move_uploaded_file($tmpname, $pfad."/".$_FILES['file']['file_name']);
    echo "Upload erfolgreich";
  }
  else
    echo "Fehler beim Upload, die Temp-Datei konnte nicht gespeichert werden";
}

Desweiteren setzt ein erfolgreicher Upload vorraus, dass auf dem Verzeichnis ein Schreibrecht für PHP vorhanden ist. Bedenke, dass es zu Problemen kommen kann,wenn PHP im safe_mode ausgeführt wird.

LG
Andy
 
Hallo,

Finde das Script super, allerdings hab ich eine kleine Frage, wie und wo muss ich einen Codeshcnipsel einbauen, damit noch geprüft wird ob es sich um eien jpg Datei handelt?

Alle anderen Upload Scripte haben bei mir auf dem Webspace nicht funktioniert und das ist das erste bei dem es funktioniert! Darum die Frage,

Danke
 
Das geht mit der PHP-Funktion "getimagesize($filename)". Diese Funktion kann abprüfen, um welchen Dateityp es sich handelt, allerdings geht das ausschliesslich für Images wie GIF,JPG,PNG und SWF -Windows-Bitmap wird nicht unterstützt.
Die Funktion gibt nach dem Aufruf ein Array zurück, indem sich dann die Bildgrösse in Pixeln und Image-Type befinden.

LG
Andy
 
Oke danke, nur eine Frage dennoch, wo muss ich das in das Script einbauen?
Code:
$uploaddir            = 'upload/';                            # Verzeichnis zum hochladen (chmod = 777)
getimagesize($filename) = 'jpg';
            // Dateinamen beschneiden
            $search                = array();


So? :confused:

Grüße
 
Zuletzt bearbeitet:
Zurück