Seite 1 von 1

Uploadscript Höhe, Breite, Dateiname

Verfasst: 24.06.2010 17:10
von Bones van Helghast
Hallöle. :)

Ich bastel zurzeit an ein kleines Uploadscript das es ermöglicht GIF und JPG bilder hochzuladen diese werden dann auf /upload/ gespeichert.
Allerdings soll das ganze nun so ablaufen:
Die Datei wird hochgeladen, die Datei soll (entweder) überprüft werden ob die maximale höhe/breite und größe nicht überschritten wird (oder) auf den maximalen wert verkleinert werden wenn sie zu groß ist, ist die datei kleiner als die gegebenen Werte soll die datei unverändert sein. Anschließend soll die Datei noch den Namen geändert bekommen...
leider schaff ich es weder die abfrage für die maximale höhe noch breite noch die änderung des Namens hinzubekommen und wende mich daher an euch da ihr mir bisher immer weiter geholfen habt... Mein PHP-Code sieht z.Z so aus:

Code: Alles auswählen

<?php
$action = $_GET['action'];
echo'
<form action="foto.php?action=send" method="post" enctype="multipart/form-data">
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen">
</form>';
if ($action == "send") {
$dateityp = GetImageSize($_FILES['datei']['tmp_name']);
if($dateityp[2] != 0)
   {

   if($_FILES['datei']['size'] <  102400)
      {
      move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);
      echo "Das Bild wurde Erfolgreich nach upload/".$_FILES['datei']['name']." hochgeladen";
      }

   else
      {
         echo "Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }
    }
?>
Edit:

Der Dateiname soll später aus der URL ausgelesen werden d.H es kommt noch eine GET-Abfrage dazu ($_GET['username']) und die datei soll dann so heißen wie der username aus der URL.

Re: Uploadscript Höhe, Breite, Dateiname

Verfasst: 24.06.2010 19:12
von gn#36
Also zunächst mal grundsätzlich: Es ist meist keine gute Idee, den Namen einer Datei beizubehalten wenn du ein Upload annimmst. Ansonsten könnten da nämlich böse Dinge drin sein und ein trickreicher Uploader schafft es ggf. sogar eine ausführbare Datei auf dem Server daraus zu machen (also selbst wenn du die Dateiendung prüfst trotzdem eine PHP Datei daraus zu machen). Also sollte man möglichst den Namen der Datei ändern, den Usernamen kannst du ja z.B. aus der Datenbank holen, das sollte zumindest etwas sicherer sein. Um die Datei umzubenennen musst du ja lediglich einen anderen Zielnamen bei move_uploaded_file angeben. Der Funktionsname bei getimagesize ist übrigens falsch, du musst alles klein schreiben.

Diese Funktion habe ich mal für den Resize auf feste Maße verwendet:
https://www.phpbb.de/support/pastebin.p ... view&s=484
Ist zwar vielleicht nicht exakt das was du brauchst, aber so ungefähr wohl denke ich schon, die restlichen Anpassungen kriegst du vielleicht ja selber hin.

Re: Uploadscript Höhe, Breite, Dateiname

Verfasst: 24.06.2010 19:47
von Bones van Helghast
Upps sorry weil falsches Forum ich hatte mich verklickt >.<

Danke für deine schnelle Antwort.
Du meinst nun also ich soll die Upload-Datei nicht nur auf größe, höhe, breite und dateiendung prüfen sondern jeweils auch noch auf einer festen Datei-Endung umwandeln? GIF, PNG und JPG nochmal in JPG umwandeln? Gibt's da nicht Qualitätsverlust?

Im übrigen wollte ich eh noch das ganze erweitern aber da ich an diesen "kleineren" dingen schon einen halben Tag rumgespielt hab hab ichs nicht mehr soweit geschafft.
Der Upload wird von einem Administrator freigeschalten der vorher das ganze überprüft.

Re: Uploadscript Höhe, Breite, Dateiname

Verfasst: 24.06.2010 20:42
von aurora876
hm, es gibt aber doch schon die möglichkeit für attachments...

Re: Uploadscript Höhe, Breite, Dateiname

Verfasst: 24.06.2010 22:36
von gn#36
Du kannst es speichern wie du willst, das war nur ein Skript was ich mal benutzt habe an dem du sehen kannst wie es grundsätzlich geht. JPG ist natürlich grundsätzlich erst mal verlustbehaftet, aber bei meinen Bildern war das erst mal egal, in der Regel hat man ja doch wenig Text in den Bildern, abgesehen davon sind die Abmessungen die ich benutzt habe recht klein wie man sieht, da bleibt vom Bild ohnehin nicht viel von den Details übrig. Das Neuerstellen des Bildes hat aber auch den Vorteil, dass dabei in die Bilder eingebettete Viren normalerweise keine Chance haben, die Prozedur zu überleben, da das Bild völlig zerlegt wird.