[PHP] Upload-Script fuer Bilder

Antoniker

Lt. Junior Grade
Registriert
Nov. 2006
Beiträge
296
Hi Leute,
ich habe mich nun seit ein paar Stunden mit einem Script versucht das man Bilder hochladen kann, aber ich habe keine Ahnung was fuer Funktionen es da gibt die das machen koennten.

Ich bitte daher euch, mir ein kleines Bild-Upload-Script zu schreiben, und das bitte mit ausfuehrlichen Kommentaren das ich das verstehe :)

Das Script soll Bilder bis zu einer max. Groesse von 2MB haben und nur JPG|GIF|PNG - Endungen zulassen, hoffe ich verlange da nicht zu viel :rolleyes:

mfg Michael
 
Ich kann dir jetzt zwar kein Script auf die Schnelle schreiben aber such doch einfach mal bei Google nach bereits vorhandenen Scripten. Da gibt es einiges. Nimm diese einfach mal unter die Lupe, teilweise sind sie auch leicht im Sourcecode kommentiert. Ich denke das ist die beste Methode um soetwas zu lernen. Aber nicht ganze Abschnitte rauskopieren ;)
 
Naja, da liegt ja das Problem, ich find nichts passendes oder falsche Suchtreffer oder Treffer aber ohne Kommentare, und ich moechte das ja lernen, ohne gute Kommentare geht das schwer :(

Manchmal habe ich das Gefuehl das Google das mit absicht macht :D

mfg Michael
 
Zuletzt bearbeitet: (Satz vergessen)
Hallo Michael.

Was brauchst du genau? Das Formular selbst wirst du ja hinbekommen, also schätze ich mal, dass es dir um die Verarbeitung der hochgeladenen Dateien geht. Willst du nur die Dateien per Formular auf den Server schaufeln, oder soll mit den Bildern auch noch was angestellt werden? Schau dir für den Fall des reinen Hochladens mal die Funktion move_uploaded_file und die Felder von $_FILES an, damit solltest du eigentlich weit kommen. Wenn du spezifische Fragen hast, helf ich dann gerne weiter, dir jetzt ein fertiges Script zu liefern bringt erstens keinen Lerneffekt (auch nicht gut kommentiert) und zweitens hab ich auch gerade keine Zeit dafür. :D


Gruß,
Hösel
 
Hi Leute, da ich derzeit keinen Zugriff auf mein Projekt habe (Projekt liegt am Notebook, Notebook besetzt :freak:), habe ich einfach mal im Editor mich versucht und wollte euch fragen ob das Script laufen koennte...

Die ganzen Kommentare habe ich mir als Denk-Hilfe eingebaut! Ich hoffe das das Script richtig aufgebaut ist, jedoch bin ich nur ein armer kleiner Informatik-Schueler, der kann sich auch mal irren :evillol:

Hier mein Script:
PHP:
<?php  //Variablen festlegen
	$uploaddir = 'Bilder/'; //Ordner
         $maxsize = '2097152';	//Bild darf max. 2MB besitzen

         if ($_FILES['userfile']['size'] <= $maxsize){
         	if ($_FILES['userfile']['type'] == strtolower("gif") OR  //strtolower bewirkt komplette kleinschreibung
                   $_FILES['userfile']['type'] == strtolower("png") OR
                   $_FILES['userfile']['type'] == strtolower("jpg")) {

	                 if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name'])) {
	                         echo "Bild erfolgreich hochgeladen!";
	                 } else {  //Falls das Bild nicht hochgeladen werden konnte
	                         echo "Bild wurde nicht hochgeladen!";
	                 }

         	} else {  //Falls Bild eine falsche Endung besitzt
                 	echo "Die Datei ist m&ouml;glicherwei&szlig;e kein Bild oder ein Bild im ung&uuml;ltigen Format!";
                         echo "<br> Folgende Formate sind g&uuml;ltig: *.gif, *.jpg, *.png";
                 }
	} else {  //Falls das File zu gross ist
		echo "Das hochgeladene Bild ist zu gro&szlig;! Bitte laden Sie ein kleineres Bild hoch.";
	}
?>

mfg Michael
 
Zuletzt bearbeitet: (Rechtschreib-Fehler)
Ob das Script so funktioniert habe ich jetzt nich nachgegcukt.
Nur ein kleiner Tipp. Wenn viele eingaben geprüft werden, mache ich das so:
PHP:
<?php  //Variablen festlegen
$uploaddir = 'Bilder/'; //Ordner
$maxsize = '2097152';    //Bild darf max. 2MB besitzen
$msg = array();
if ($_FILES['userfile']['size'] >= $maxsize){
	$msg[] = 0;
}
if ($_FILES['userfile']['type'] != strtolower("gif") OR  //strtolower bewirkt komplette kleinschreibung
$_FILES['userfile']['type'] != strtolower("png") OR
$_FILES['userfile']['type'] != strtolower("jpg")) {
	$msg[] = 1;
}
if (sizeof($msg) == 0) {
	if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$_FILES['userfile']['name'])) {
		echo "Bild erfolgreich hochgeladen!";
	} else {
		echo "Bild wurde nicht hochgeladen!";
	}
}

$errormsg = array();
$errormsg[] = "Die Datei ist m&ouml;glicherwei&szlig;e kein Bild oder ein Bild im ung&uuml;ltigen Format!<br> Folgende Formate sind g&uuml;ltig: *.gif, *.jpg, *.png";
$errormsg[] = "Das hochgeladene Bild ist zu gro&szlig;! Bitte laden Sie ein kleineres Bild hoch.";
if (sizeof($msg)>0) {
	foreach ($msg as $id) {
		echo $errormsg[$id];
	}
}
?>
Ich finde das ist wesentlich übersichtlicher und leichter zu warten.

MFG

tewes
 
Das strtolower("gif") ist ein wenig sinnfrei ... "gif" ist bereits klein geschrieben und du lässt die Buchstabend dann in kleine Buchstaben wandeln ... wozu? :D
 
Adagio schrieb:
Das strtolower("gif") ist ein wenig sinnfrei ... "gif" ist bereits klein geschrieben und du lässt die Buchstabend dann in kleine Buchstaben wandeln ... wozu? :D

Weil es (sry fuer den nachvollgenden Ausdruck) VOLLKOFFER gibt, denen das egal ist ob die Endung gross oder klein geschrieben wurde... und da kommen dann Fehler vor XD

@tewes: Danke fuer das zeigen wie man uebersichtlicher arbeiten kann, werd mir das zu herzen nehmen ;)

@topic:
Konnte mein Script ausprobieren, jedoch: er schreibt kein File in die $_FILE
Habe das Script getestet, da kam der erste Fehler: Bild besitzt ungueltiges Format (dachte ich also: sch*** drauf, kommentier das mal aus, Fehler suchste spaeter) -> 2ter Fehler "Bild wurde nicht hochgeladen", hab ich mir gedacht: oh oh... was hab ich da wieder zusammengescriptet?
Gut, hab mir mal einfach $_FILES['userfile']['name'] ausgeben lassen, da steht genau NIX drinn, was hab ich falsch gemacht?

Hat das was damit zu tun das das Feld mit dem die Datei im Formular hochgeladen werden soll "frmfile" heisst?
 
lass dir mal das ganze Array mit
PHP:
echo "<pre>";
print_r($_Files);
echo "</pre>";
ausgeben. Dann siehts du was alles mitgesendet wird.

Am besten auch noch den Post Array ausgeben.
 
Ok Leute, danke fuer eure Hilfe
Aber so wie's am besten ist, habe ich es im Endeffekt doch selbst mit herumprobieren herausgefunden, und ihr habt mich in die richtige Richtung gelenkt, danke :)

Das Script laeuft jetzt einwandfrei ;)

Wenn ich es posten soll, dann sagt es einfach, dann poste ich es :D

mfg & big thanks
Michael
 
Zurück
Oben