Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Uploadscript um Resize erweitern

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
stadi
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 19.08.2007, 19:11

Beitrag von stadi » 19.08.2007, 19:20

Nabend zusammen,

Ich nutze ein Uploadscript um Bilddateien damit auf einen Server hochzuladen, nach erfolgtem Upload wird die Datei entsprechend der Dateiendung in einem Unterverzeichnis auf dem Server abgelegt, der Link zum Bild als BB-Code ausgegeben und das Bild angezeigt.
Jetzt würde ich das ganze gern um die Funktion erweitern das zu große Bilder automatisch auf eine Breite von max. 640 Pixel verkleinert werden.
Ich denke für PHP-Spezialisten ist das ganze kein Problem, für mich als blutiger PHP Anfänger schon :oops:

vielleicht könnte mir jemand bischen auf die Sprünge helfen, wäre echt Klasse. Hier das orginal-Script:

Code: Alles auswählen

<?php
# Umgebungsvariablen festlegen
include&#40;"config.inc"&#41;;


# wurde das Formular wurde abgeschickt ?
if&#40;$_POST&#91;"submit"&#93; == "Upload"&#41; &#123;

   // Wurde wirklich eine Datei hochgeladen?
   if&#40;is_uploaded_file&#40;$_FILES&#91;"file"&#93;&#91;"tmp_name"&#93;&#41;&#41; &#123;

   // Gültige Endung? &#40;$ = Am Ende des Dateinamens&#41; &#40;/i = Groß- Kleinschreibung nicht berücksichtigen&#41;
   if&#40;preg_match&#40;"/\." . $allowed_types . "$/i", $_FILES&#91;"file"&#93;&#91;"name"&#93;&#41;&#41; &#123;

      // Datei auch nicht zu groß
      if&#40;$_FILES&#91;"file"&#93;&#91;"size"&#93; <= $max_byte_size&#41; &#123;

          // Alles OK -> Datei kopieren
          $md5s= md5_file&#40;$_FILES&#91;"file"&#93;&#91;"tmp_name"&#93;&#41;;       # md5summe der Datei erstellen, um doppelt abgelegte Bilder zu vermeiden
          $size=$_FILES&#91;"file"&#93;&#91;"size"&#93;;                      # dateigroesse bestimmen
          $hexsize=str_pad&#40;dechex&#40;$size&#41;,6,"0",STR_PAD_LEFT&#41;; # dateigroesse in hexadezimal umrechnen
          $ext=".gif";                                        # default-Dateiendung = .gif
          $u1="x";                                            # default-Upload-Unterverzeichnis = "x"

          if&#40;$_FILES&#91;"file"&#93;&#91;"type"&#93;=="image/pjpeg"&#41;          # pjpegs ins Unterverzeichnis "p" legen
          &#123;
            $ext = ".jpg";
            $u1="p"; 
          &#125; 
          if&#40;$_FILES&#91;"file"&#93;&#91;"type"&#93;=="image/jpg"&#41;            # jpgs ins Unterverzeichnis "j" legen
          &#123;
            $ext = ".jpg";
            $u1="j"; 
          &#125; 

          if&#40;$_FILES&#91;"file"&#93;&#91;"type"&#93;=="image/jpeg"&#41;          # jpegs ebenfalls ins Unterverzeichnis "j" legen
          &#123;
            $ext = ".jpg";
            $u1="j";
          &#125;
          if&#40;$_FILES&#91;"file"&#93;&#91;"type"&#93;=="image/gif"&#41;           # "gif animationen ins Unterverzeichnis "g" legen
          &#123;
             $ext = ".gif";
             $u1="g";
          &#125;
          $f=$md5s.$hexsize;                                # hexadezimalcode aus dateigroesse und md5summe erstellen
          $newf=base_convert&#40;$f,16,36&#41;;                     # diesen hexadezimalcode &#40;=basis 16&#41; auf basis 36 umrechnen
          $filename=$newf.$ext;                             # neuer Dateiname ist dieser neue Code + oben ermittelter Dateiendung
          $s1=substr&#40;$filename,0,1&#41;;                        # das erste Zeichen des Dateinamens ermitteln
          $newfile="$basedir/$uploaddir/$u1/$s1/$filename"; # Absoluter lokaler Pfad zum neuen Dateinamen
          $webfile="$webdir/$uploaddir/$u1/$s1/$filename";  # Absoluter WWW-Pfad zur hochgeladenen Datei

          if&#40;copy&#40;$_FILES&#91;"file"&#93;&#91;"tmp_name"&#93;, $newfile&#41;&#41; &#123;

             echo "<center>Die Datei <b>".$_FILES&#91;"file"&#93;&#91;"name"&#93;."</b> &#40;$size Bytes&#41; wurde erfolgreich hochgeladen!</center><br>";
            # echo "Name&#58; " . $_FILES&#91;"file"&#93;&#91;"name"&#93; . "<br>";
            # echo "Größe&#58; " . $_FILES&#91;"file"&#93;&#91;"size"&#93; . " Byte<br>";
            # echo "MIME-Type&#58; " . $_FILES&#91;"file"&#93;&#91;"type"&#93; . "<br>";
            # echo "Link&#58; <a href=\"$webfile\">" . $_FILES&#91;"file"&#93;&#91;"name"&#93; . "</a><br>";
             print "<hr><br>\n";
             print "<center><div style='align&#58;middle;'>BBCode für das IOFF&#58;\n";
             print "<textarea readonly rows=3 cols=110 INPUT onmouseover=this.focus&#40;&#41; onfocus=this.select&#40;&#41;>";
             print "\n";
             print "&#91;CENTER&#93;&#91;img&#93;".$webfile."&#91;/img&#93;&#91;/CENTER&#93;" ;
             print "</textarea>\n</div></center><br>";
          #   echo "<center>md5sum&#58; $md5s<br>\n";
          #   echo "new fil &#58; $filename";
             echo "<br><hr><br><center>hochgeladenes Bild&#58;<br><br><img src=\"$webfile\"></cnter><br>";
          #   print_r&#40;$_FILES&#41;;
             print "<br>\n<a href=/upload/index.php>Zurück zur Startseite</a>\n";
 
##################### logfile erstellen
             $handle = @fopen &#40;"logs/uploaded.log","a"&#41;;
             if&#40;$handle&#41;
             &#123;
                 $loc_de = setlocale &#40;LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge'&#41;;

                 $today = date&#40;"j.F Y, H&#58;i&#58;s"&#41;;
                 $remote=$_SERVER&#91;"REMOTE_ADDR"&#93;;
                 $uploadedfilename="$uploaddir/$u1/$s1/$filename";
                 $browser=$_SERVER&#91;"HTTP_USER_AGENT"&#93;;
                 $referer=$_SERVER&#91;"HTTP_REFERER"&#93;;
                 $oldname=$_FILES&#91;"file"&#93;&#91;"name"&#93;;
                 $towrite=@sprintf&#40;"%-30s &#58; %15s &#58; %7s Bytes &#58; %s &#58; %s &#58; %s &#58;%s\n",$today,$remote,$size,$uploadedfilename,$oldname,$browser,$referer&#41;;
                 @fwrite&#40;$handle,$towrite&#41;;
                 @fclose&#40;$handle&#41;;
             &#125;

           &#125;
          else &#123;
            echo "Datei konnte nicht hochgeladen werden.";
          &#125;
      &#125;
      else &#123;
          echo "Die Datei darf nur eine Größe von " . $max_byte_size . " Byte besitzen.";
      &#125;
   &#125;
   else &#123;
     echo "Die Datei besitzt keine ungültige Endung.";
   &#125;
&#125;
else &#123;
   echo "Keine Datei zum Hochladen angegeben.";
&#125;

&#125;
else &#123;

?>
<style type="text/css">
<!--
.Stil1 &#123;color&#58; #FF0000&#125;
.Stil3 &#123;font-size&#58; 12&#125;
.Stil5 &#123;
	font-size&#58; 24px;
	font-weight&#58; bold;
&#125;
-->
</style>

<div align="center">
  <p class="Stil5">Fr&uuml;hlings Bilder -Uploader</p>
</div>
<div style="font-family&#58;Arial,Helvtica,Verdana;font-size&#58;8pt;">
  <li class="Stil3">
    <div align="center">erlaubte Datei-Endungen sind nur <font color="red">.gif</font> und <span class="Stil1">.jpg</span> <br>
    
  </div>
  <li class="Stil3">
    <div align="center">Die maximale Dateigr&ouml;&szlig;e beträgt vorerst <?php echo number_format&#40;$max_byte_size,0,".","."&#41;;  ?> Bytes<br>
    </div>
  <li>
    <div align="center"><span class="Stil3">sollte eine identische Datei bereits vorhanden sein &#40;dieselbe Checksumme, Dateigr&ouml;&szlig;e&#41;, so bekommt man den Link zur bereits existierenden Datei zurück.</span><br>
    </div>
</div>
<div align="center"><br>
  <br>
</div>
<form action="index.php" method="post" enctype="multipart/form-data" name="upload">
  <div align="center">
    <input type="file" name="file">
    <input type="submit" name="submit" value="Upload">
  </div>
</form>
<div align="center"><br>
</div>
<div style="font-family&#58;Arial,Helvtica,Verdana;font-size&#58;7pt;">
  <div align="center">Bitte die Bilder nicht in anderen Foren als dem IOFF verlinken - das funktioniert ohnehin nicht....
    <br>
    <br>
    Danke für Euer Verständnis. <br>
    <br>
    <br>
  </div>
  <hr>
<br>
<br>
</div>
<?

&#125;

?>

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

bangolo
PostRank 6
PostRank 6
Beiträge: 347
Registriert: 23.02.2007, 15:27
Wohnort: Essen

Beitrag von bangolo » 20.08.2007, 12:15

beim upload lässt sich das imho nicht realisieren, da musst du das Bild über die Grafik Funktionen von php gdlib neu schreiben lassen. Das ist auch nicht mal so eben in den code einzubauen, gibt aber fertige Klassen die das machen.

Nicht auf jedem server ist gdlib installiert kann man aber in der phpinfo() sehen

subcordem
PostRank 3
PostRank 3
Beiträge: 90
Registriert: 01.03.2006, 01:26

Beitrag von subcordem » 21.08.2007, 06:43

in dem zusammenhang ist vielleicht das ganz nützlich:
https://php.about.com/od/advancedphp/ss ... nail_4.htm