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

Suche Bilder hochladen Script

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
ypsie
PostRank 5
PostRank 5
Beiträge: 328
Registriert: 03.11.2003, 15:40
Wohnort: Wien

Beitrag von ypsie » 21.01.2005, 00:39

Hallo,

Ich suche unbedingt ein einfaches Php Script, welches die Möglichkeit gibt, Bilder online hochzuladen und danach einfach die Url des Bildes anzeigt. Bis jetzt habe ich nur diese monströsen Imageverzeichnisse gefunden, ich benötige aber ein kleines Script.

Ein Formular: Man klickt auf "Durchsuchen" dann wählt man das Bild aus, klickt auf Okay, wartet kurz und sieht die Url der hochgeladenen Grafik.

Bitte melden, wenn ihr eines gefunden habt!

Mfg, Julian

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

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 08.02.2005, 04:11

Hallo,

versuche es mal hiermit:

Code: Alles auswählen

<html>
<head>
<title>Upload</title>
</head>
<body><? 
if&#40;$action&#41;&#123;
$path = "/test/"; Url zum Speicher Ordner
$filename = "";
$deindomain = "http&#58;//www.deindomain.de";
$time=time&#40;&#41;;
if &#40;$HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;<> 'none'&#41;
	&#123;	
			$file = $HTTP_POST_FILES&#91;'userfile'&#93;&#91;'name'&#93;;
			$temp = $HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;;
			$path_parts = pathinfo&#40;$file&#41;;
			$filename = "test_" . $time . "." . $path_parts&#91;"extension"&#93;;
	  		$dest = $path.$filename;
	
			copy&#40;$temp, $dest&#41;;
	
		echo 'Datei ist auf den Server!';
		echo 'Url der Datei&#58; '.$deindomain.$path.$filename;
	&#125; 
&#125; else &#123; ?>

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="400000">
<br>
<strong>File Upload</strong> <br>
<br>
<input name="userfile" type="file" size=40>
<br>
<br>
<input type="submit" name="action" value="Speichern">
</form><? &#125; ?></body>
</html>
mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 25.04.2005, 19:02

Hi,

nochmal überarbeitet ;)

Code: Alles auswählen

<html> 
<head> 
<title>Upload</title> 
</head> 
<body><? 
if&#40;$action&#41;&#123; 
$path = "test/"; // Url zum Speicher Ordner 
$filename = ""; 
$deindomain = "http&#58;//www.deindomain.de/"; 
$time=time&#40;&#41;; 
if &#40;$HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;<> 'none'&#41; 
   &#123;    
         $file = $HTTP_POST_FILES&#91;'userfile'&#93;&#91;'name'&#93;; 
         $temp = $HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;; 
         $path_parts = pathinfo&#40;$file&#41;; 
         $filename = "test_" . $time . "." . $path_parts&#91;"extension"&#93;; 
           $dest = $path.$filename; 
    
         copy&#40;$temp, $dest&#41;; 
    
      echo "Die Datei ist auf dem Server! <br><br>"; 
      echo "Url der Datei&#58; <a href=\"$deindomain$path$filename\" target=\"_blank\">".$deindomain.$path.$filename;
	  echo "</a>";
   &#125; 
&#125; else &#123; ?> 

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"> 
<input type="hidden" name="MAX_FILE_SIZE" value="400000"> 
<br> 
<strong>File Upload</strong> <br> 
<br> 
<input name="userfile" type="file" size=40> 
<br> 
<br> 
<input type="submit" name="action" value="Speichern"> 
</form><? &#125; ?></body> 
</html>
funktioniert super.

ich habe nur ein paar ansätze gebraucht um was anderes zu basteln, aber trotzdem danke :D
Ich kaufe Dein Forum!
Kontaktdaten

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


RW
PostRank 6
PostRank 6
Beiträge: 436
Registriert: 23.07.2003, 08:54

Beitrag von RW » 25.04.2005, 20:43

HI,

move_uploaded_file() anstatt copy() bei safe_mode off :)

Gruß
RW

mgutt
PostRank 10
PostRank 10
Beiträge: 3206
Registriert: 08.03.2005, 13:13

Beitrag von mgutt » 09.06.2005, 08:43

Hi,

ich habe mich nochmal ran gesetzt und aus verschiedenen Codeschnipseln was zusammengebraut.

Das Tool funktioniert ganz gut und kann hier mal getestet werden:

www.maxrev.de/typenupload.php

Sinn soll sein, dass ein Bild dass ich hochlade, einmal die vorgegebe Größe eines Vorschaubildes erreicht und einmal des großen Bildes, dass auch mit einer Angabe vorgegeben werden kann.

Die Komprimierung liegt bei 70%. Das ist ein guter Komprimiss zwischen Qualität und Speicherplatz, wie ich finde.

Es funktioniert bisher super mit .jpg, .jpeg & .png. Nur mit .gif habe ich zur Zeit das Problem, dass er bei den Thumbnails eine Fehleranzeige darstellt. Da muss noch irgendwo die Codezeile rein, dass ein "Ersatzbild" angezeigt wird.

Oder kann man .gifs auch umwandeln in jpeg's ?!

Code: Alles auswählen

<html> 
<head> 
<title>Upload</title> 
</head> 
<body>
<? 
if&#40;$action&#41;&#123; 

	// --------------------------------
	// Diverse Variablen
	// --------------------------------

$path = "images/typen/"; // Url zum Speicherordner der großen Bilder
$thumb_path = "images/typen/thumb/"; // Url zum Speicherordner der Vorschaubilder
$config_width = "320"; // Bildbreite max. bei großem Bild
$config_height = "240"; // Bildhöhe max. bei großem Bild
$config_thumb_width = "80"; // Bildbreite max. bei Vorschaubild
$config_thumb_height = "60"; // Bildhöhe max. bei Vorschaubild
$resizequality = "70"; // Bildkompressionsrate 0-100
$deindomain = "http&#58;//www.maxrev.de/";  // unsere Domain

if &#40;$HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;<> 'none'&#41; 
   &#123;

	// --------------------------------
	// Get File Upload Info
	// --------------------------------

         $filename = $HTTP_POST_FILES&#91;'pic_file'&#93;&#91;'name'&#93;;
         $filetype = $HTTP_POST_FILES&#91;'pic_file'&#93;&#91;'type'&#93;;
         $filetmp = $HTTP_POST_FILES&#91;'pic_file'&#93;&#91;'tmp_name'&#93;;

	// --------------------------------
	// Check file type
	// --------------------------------

	switch &#40;$filetype&#41;
	&#123;
		case 'image/jpeg'&#58;
		case 'image/jpg'&#58;
		case 'image/pjpeg'&#58;

			$pic_filetype = '.jpg';
			break;

		case 'image/png'&#58;
		case 'image/x-png'&#58;

			$pic_filetype = '.png';
			break;

		case 'image/gif'&#58;

			$pic_filetype = '.gif';
			break;
		default&#58;
			die&#40;"Falsches Dateiformat. Nur JPEG, GIF oder PNG erlaubt!"&#41;;
	&#125;

	// --------------------------------
	// Generate filename
	// --------------------------------

	srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;;	// for older than version 4.2.0 of PHP

	do
	&#123;
		$pic_filename = md5&#40;uniqid&#40;rand&#40;&#41;&#41;&#41; . $pic_filetype;
	&#125;
	while&#40; file_exists&#40;$path . $pic_filename&#41; &#41;;


	// --------------------------------
	// Move this file to upload directory
	// --------------------------------

	$ini_val = &#40; @phpversion&#40;&#41; >= '4.0.0' &#41; ? 'ini_get' &#58; 'get_cfg_var';

	if &#40; @$ini_val&#40;'open_basedir'&#41; != '' &#41;
	&#123;
		if &#40; @phpversion&#40;&#41; < '4.0.3' &#41;
		&#123;
			die&#40;"open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin"&#41;;
		&#125;

		$move_file = 'move_uploaded_file';
	&#125;
	else
	&#123;
		$move_file = 'copy';
	&#125;

	$move_file&#40;$filetmp, $path . $pic_filename&#41;;

	@chmod&#40;$path . $pic_filename, 0777&#41;;


	// --------------------------------
	// Well, it's an image. Check its image size
	// --------------------------------

	$pic_size = getimagesize&#40;$path . $pic_filename&#41;;

	$pic_width = $pic_size&#91;0&#93;;
	$pic_height = $pic_size&#91;1&#93;;


	// --------------------------------
	// This image is okay, we can cache its thumbnail now
	// --------------------------------

	if&#40;$pic_filetype != '.gif'&#41;
	&#123;
		$gd_errored = FALSE;

		switch &#40;$pic_filetype&#41;
		&#123;
			case '.jpg'&#58;
				$read_function = 'imagecreatefromjpeg';
				break;
			case '.png'&#58;
				$read_function = 'imagecreatefrompng';
				break;
		&#125;

		$src = @$read_function&#40;$path  . $pic_filename&#41;;

		if &#40;!$src&#41;
		&#123;
			$gd_errored = TRUE;
			$pic_thumbnail = '';
		&#125;
		else if&#40; &#40;$pic_width > $config_thumb_width&#41; or &#40;$pic_height > $config_thumb_height&#41; &#41;
		&#123;
			// Resize it
			if &#40;$pic_width > $pic_height&#41;
			&#123;
				$thumbnail_width = $config_thumb_width;
				$thumbnail_height = $config_thumb_width * &#40;$pic_height/$pic_width&#41;;
			&#125;
			else
			&#123;
				$thumbnail_height = $config_thumb_height;
				$thumbnail_width = $config_thumb_height * &#40;$pic_width/$pic_height&#41;;
			&#125;

			$thumbnail = @imagecreatetruecolor&#40;$thumbnail_width, $thumbnail_height&#41;;

			$resize_function = 'imagecopyresampled';

			@$resize_function&#40;$thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height&#41;;
		&#125;
		else
		&#123;
			$thumbnail = $src;
		&#125;

		if &#40;!$gd_errored&#41;
		&#123;
			$pic_thumbnail = $pic_filename;

			// Write to disk
			switch &#40;$pic_filetype&#41;
			&#123;
				case '.jpg'&#58;
					@imagejpeg&#40;$thumbnail, $thumb_path . $pic_thumbnail, $resizequality&#41;;
					break;
				case '.png'&#58;
					@imagepng&#40;$thumbnail, $thumb_path . $pic_thumbnail&#41;;
					break;
			&#125;

			@chmod&#40;$thumb_path . $pic_thumbnail, 0777&#41;;

		&#125; // End IF $gd_errored

	&#125; // End Thumbnail Cache


  // --------------------------------------
  // OK lets resize the original picture
  // --------------------------------------

  if&#40;$pic_filetype != '.gif'&#41;
  &#123;
    $gd_errored = FALSE;

    switch &#40;$pic_filetype&#41;
    &#123;
      case '.jpg'&#58;
        $read_function = 'imagecreatefromjpeg';
        break;
      case '.png'&#58;
        $read_function = 'imagecreatefrompng';
        break;
    &#125;

    $src = @$read_function&#40;$path  . $pic_filename&#41;;

    if &#40;!$src&#41;
    &#123;
      $gd_errored = TRUE;
      $pic_resize = '';
    &#125;
    else if&#40; &#40;$pic_width > $config_width&#41; or &#40;$pic_height > $config_height&#41; &#41;
    &#123;
      // Resize it
      if &#40; &#40;&#40;$pic_width / $pic_height&#41; > &#40;$config_width / $config_height&#41;&#41; &#41;
      &#123;
        $resize_width = $config_width;
        $resize_height = $config_width * &#40;$pic_height/$pic_width&#41;;
      &#125;
      else
      &#123;
        $resize_height = $config_height;
        $resize_width = $config_height * &#40;$pic_width/$pic_height&#41;;
      &#125;

      $resize = @imagecreatetruecolor&#40;$resize_width, $resize_height&#41;;

      $resize_function = 'imagecopyresampled';

      @$resize_function&#40;$resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height&#41;;
    &#125;
    else
    &#123;
      $resize = $src;
    &#125;

    if &#40;!$gd_errored&#41;
    &#123;
      $pic_resize = $pic_filename;

      // Write to disk
      switch &#40;$pic_filetype&#41;
      &#123;
        case '.jpg'&#58;
          @imagejpeg&#40;$resize, $path . $pic_resize, $resizequality&#41;;
          break;
        case '.png'&#58;
          @imagepng&#40;$resize, $path . $pic_resize&#41;;
          break;
      &#125;

      @chmod&#40;$path . $pic_resize, 0777&#41;;

    &#125; // End IF $gd_errored

  &#125; // End Picture Resize

      echo "Datei ist auf dem Server! <br><br>"; 
      echo "Url des großen Bildes&#58; <a href=\"$deindomain$path$pic_filename\" target=\"_blank\">".$deindomain.$path.$pic_filename;
	  echo "</a> <br><img src=\"$deindomain$path$pic_filename\"><br><br>";
      echo "Url des Vorschaubildes&#58; <a href=\"$deindomain$thumb_path$pic_filename\" target=\"_blank\">".$deindomain.$thumb_path.$pic_filename;
	  echo "</a> <br><img src=\"$deindomain$thumb_path$pic_filename\">";

   &#125; 
&#125; else &#123; ?>

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<br>
<strong>File Upload</strong> <br>
<br>
<input name="pic_file" type="file" size=40>
<br>
<br>
<input type="submit" name="action" value="Speichern">
</form>
<?
 &#125;
	// -----------------------------------------
	// Das Script kann unter Verwendung
	// dieses Vermerks uneingeschränkt
	// genutzt / verändert werden.
	//  © www.gutt.it
	// -----------------------------------------
?>
</body>
</html>
Zuletzt geändert von mgutt am 06.08.2015, 12:09, insgesamt 1-mal geändert.
Ich kaufe Dein Forum!
Kontaktdaten

net-zwerg
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 18.07.2005, 18:49
Wohnort: Sellin

Beitrag von net-zwerg » 18.07.2005, 18:53

moin, dein 2. script find ich ganz gut, nur was muss man umstellen, damit der Dateiname nicht verändert wird? Also wenn die Datei z.B. Auto.jpg heißt soll sie auch so auf dem Server heißen und nicht z.B. bild_2345209453405930585093850983405984309853094098.jpg :D

mfg

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 18.07.2005, 20:57

Hallo,

Code: Alles auswählen

<html> 
<head> 
<title>Upload</title> 
</head> 
<body>
<? 
if&#40;$action&#41;&#123; 
	$filename = ""; 
	//$time=time&#40;&#41;; 
	if &#40;$HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;<> 'none'&#41;&#123;    
		$file = $HTTP_POST_FILES&#91;'userfile'&#93;&#91;'name'&#93;; 
		$temp = $HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;; 
		$path_parts = pathinfo&#40;$file&#41;; 
		$filename =$file. "." . $path_parts&#91;"extension"&#93;; 
		$dest = $path.$filename; 
		copy&#40;$temp, $dest&#41;; 
		echo 'Datei ist auf den Server!'; 
		echo 'Url der Datei&#58; '.$deindomain.$path.$filename; 
	&#125; 
&#125; else &#123; 
?> 
	<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>"> 
	<input type="hidden" name="MAX_FILE_SIZE" value="400000"> 
	<br><strong>File Upload</strong><br><br> 
	<input name="userfile" type="file" size=40><br><br> 
	<input type="submit" name="action" value="Speichern"> 
	</form>
<? &#125; ?>
</body> 
</html> 
Script Hilfe: https://www.php-space.info/bilder-upload-script/

mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

net-zwerg
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 18.07.2005, 18:49
Wohnort: Sellin

Beitrag von net-zwerg » 19.07.2005, 12:35

1.danke für das Script, nur kann man auch noch angeben, dass wenn bereits eine gleichnamige Datei vorhanden ist, er sie einfach überschreibt?

2. in der Zeile
$filename =$file. "." . $path_parts["extension"];
ist das alles nach $file zu viel. wenn man die Datei hochläd heißt sie "Datei.jpg.jpg" (doppelte Endung)

mfg

net-zwerg
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 18.07.2005, 18:49
Wohnort: Sellin

Beitrag von net-zwerg » 19.07.2005, 12:37

oh Punkt 1 hat sich erledigt. Internet Explorer hat die Datei nur nicht aktualisiert...
:)

eine Frage habe ich noch: Ich wollte nun noch ein Script, welches die Bilder aus dem Ordner ausliest und in einem DropDownMenü ausgibt, damit man dort sich ein Bild aussuchen kann und speichern kann.

Code: Alles auswählen

<?php 
                            echo "<select name=\"bild\">";
                        $handle = opendir&#40;'pictures/'&#41;;
                        while &#40;$file = readdir&#40;$handle&#41;&#41; &#123;
                            $filelist&#91;&#93; = $file;
                        &#125; 
                        asort&#40;$filelist&#41;;
                        while &#40;list &#40;$key, $file&#41; = each &#40;$filelist&#41;&#41; &#123;
                            ereg&#40;".gif|.jpg|.png", $file&#41;;
                            if &#40;$file != "." && $file != ".." && $file != "index.html" && $file != "CVS"&#41; &#123;
                                echo "<option value=\"pictures/$file\"";
                                if &#40;$file == $row&#91;'Picture'&#93;&#41; &#123;
                                    echo " selected";
                                &#125; 
                                echo ">$file</option>";
                            &#125; 
                        &#125;
    
    
                            echo "</select>";
                        ?>
Er zeigt auch die Bilder an, man kann sie auswählen und speichern nur wenn man die Seite wieder aufruft, soll er in dem DropDown auch das aktuelle Bild anzeigen und nicht das erste nach dem Alphabet.
Sonst müsste ich jedes mal wenn ich was anderes ändern wollte auch das gewünschte Bild wieder auswählen bevor ich speichere..

In anderen Bereichen habe ich einfach

Code: Alles auswählen

<option><?php echo $row&#91;'Status'&#93;; ?></option>
z.b. geschrieben, aber wo würde ich dass denn im oberen qellcode einfügen? komm da nicht weiter...

mfg

net-zwerg
PostRank 1
PostRank 1
Beiträge: 4
Registriert: 18.07.2005, 18:49
Wohnort: Sellin

Beitrag von net-zwerg » 21.07.2005, 22:41

kann mir da keiner helfen? :(

luna83
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 25.02.2006, 02:28

Beitrag von luna83 » 25.02.2006, 02:33

Ich hab den oben angegebenen Code mal ausprobiert (den 2. von oben, den von mgutt) und das klappt leider nicht bei mir! Ich bekomme folgende Meldung:

Warning: copy(/Bilder/test_1140830650.jpg): failed to open stream: No such file or directory in meinedomain/uploader.php on line 19

Was mach ich falsch?
:oops:

Hasenhuf
PostRank 9
PostRank 9
Beiträge: 2840
Registriert: 26.12.2005, 22:22

Beitrag von Hasenhuf » 25.02.2006, 12:30

Ohne es mir genau anzuschauen, vielleicht liegt es an dem, was in dem Beitrag darunter steht.

luna83
PostRank 1
PostRank 1
Beiträge: 2
Registriert: 25.02.2006, 02:28

Beitrag von luna83 » 25.02.2006, 13:16

Hallo!
Hab ich schon versucht! Ich hab auch selbst schon mal bissel rumgewurschtelt, aber ohne Erfolg! Kann das an meinem Server liegen?
:(

klauskinski
PostRank 1
PostRank 1
Beiträge: 1
Registriert: 26.02.2006, 12:53
Wohnort: da und dort

Beitrag von klauskinski » 26.02.2006, 13:03

hallo,

ich bin neu hier, kann man ja sehen :D

und ich bin auch auf der suche nach einem schlanken script für bildupload, aber bei mir gestaltet sich die sache noch ein wenig schwieriger.

*also mal am urschleim anfang:

ein freund will für einen gemeinnützigen verein, wo er arbeitet ein script haben, wo er ein bild uploaden kann, muss nicht zwangsläufig mit mysql sein (mysql-db ist aber im webhostpaket enthalten, also wäre nicht das problem) nur ist die seite zu 75% von jemand anderem fertiggestellt und der hat sich irgendwie (warum auch immer) ins ausland abgesetzt. jedenfalls besteht jetzt kein kontakt mehr zu dem ehemaligen webdesigner und die seite soll aber demnächst fertiggestellt werden.

so, jetzt hat er mich gefragt, ob ich ihm da was bauen könnte. hmm, ich bin nun wirklich nicht der php-crack und in ein bereits vorhandenes system was zu integrieren, wisst ihr sicher, wie schwierig sich das gestaltet, da ja jeder so seine eigenheiten hat. also suche ich jetzt ein script, wo er dann über login seinen entsprechenden text (für veranstaltungen) verfassen kann und dazu ein bild hochladen, welches dann per hyperlink auch in originalgröße angezeigt werden kann (popup?), vorher aber nur als thumb zu sehen sein sollte.

mein gehirn läuft grad amok :)

aber gibts da schon was? alles was ich gefunden habe im web war entweder zu komplex oder aber nicht das richtige. und umstellung auf cms soll auch nicht sein (war mein vorschlag, weil relativ leicht zu realisieren), aber die jetzigen strukturen und so sollen beibehalten werden.

vielleicht hat jemand ne idee? also riesiger dank ist ihm jetzt schon sicher. evt. dann auch nen bier oder ne flasche wein? :lol:

saudepp
PostRank 7
PostRank 7
Beiträge: 505
Registriert: 09.08.2006, 09:43

Beitrag von saudepp » 30.04.2007, 22:01

Super Skript, danke!!!
mgutt hat geschrieben:Hi,

ich habe mich nochmal ran gesetzt und aus verschiedenen Codeschnipseln was zusammengebraut.

Das Tool funktioniert ganz gut und kann hier mal getestet werden:

www.maxrev.de/typenupload.php

Sinn soll sein, dass ein Bild dass ich hochlade, einmal die vorgegebe Größe eines Vorschaubildes erreicht und einmal des großen Bildes, dass auch mit einer Angabe vorgegeben werden kann.

Die Komprimierung liegt bei 70%. Das ist ein guter Komprimiss zwischen Qualität und Speicherplatz, wie ich finde.

Es funktioniert bisher super mit .jpg, .jpeg & .png. Nur mit .gif habe ich zur Zeit das Problem, dass er bei den Thumbnails eine Fehleranzeige darstellt. Da muss noch irgendwo die Codezeile rein, dass ein "Ersatzbild" angezeigt wird.

Oder kann man .gifs auch umwandeln in jpeg's ?!

Code: Alles auswählen

<html> 
<head> 
<title>Upload</title> 
</head> 
<body>
<? 
if&#40;$action&#41;&#123; 

	// --------------------------------
	// Diverse Variablen
	// --------------------------------

$path = "images/typen/"; // Url zum Speicherordner der großen Bilder
$thumb_path = "images/typen/thumb/"; // Url zum Speicherordner der Vorschaubilder
$config_width = "320"; // Bildbreite max. bei großem Bild
$config_height = "240"; // Bildhöhe max. bei großem Bild
$config_thumb_width = "80"; // Bildbreite max. bei Vorschaubild
$config_thumb_height = "60"; // Bildhöhe max. bei Vorschaubild
$resizequality = "70"; // Bildkompressionsrate 0-100
$deindomain = "http&#58;//www.maxrev.de/";  // unsere Domain

if &#40;$HTTP_POST_FILES&#91;'userfile'&#93;&#91;'tmp_name'&#93;<> 'none'&#41; 
   &#123;

	// --------------------------------
	// Get File Upload Info
	// --------------------------------

         $filename = $HTTP_POST_FILES&#91;'pic_file'&#93;&#91;'name'&#93;;
         $filetype = $HTTP_POST_FILES&#91;'pic_file'&#93;&#91;'type'&#93;;
         $filetmp = $HTTP_POST_FILES&#91;'pic_file'&#93;&#91;'tmp_name'&#93;;

	// --------------------------------
	// Check file type
	// --------------------------------

	switch &#40;$filetype&#41;
	&#123;
		case 'image/jpeg'&#58;
		case 'image/jpg'&#58;
		case 'image/pjpeg'&#58;

			$pic_filetype = '.jpg';
			break;

		case 'image/png'&#58;
		case 'image/x-png'&#58;

			$pic_filetype = '.png';
			break;

		case 'image/gif'&#58;

			$pic_filetype = '.gif';
			break;
		default&#58;
			die&#40;"Falsches Dateiformat. Nur JPEG, GIF oder PNG erlaubt!"&#41;;
	&#125;

	// --------------------------------
	// Generate filename
	// --------------------------------

	srand&#40;&#40;double&#41;microtime&#40;&#41;*1000000&#41;;	// for older than version 4.2.0 of PHP

	do
	&#123;
		$pic_filename = md5&#40;uniqid&#40;rand&#40;&#41;&#41;&#41; . $pic_filetype;
	&#125;
	while&#40; file_exists&#40;$path . $pic_filename&#41; &#41;;


	// --------------------------------
	// Move this file to upload directory
	// --------------------------------

	$ini_val = &#40; @phpversion&#40;&#41; >= '4.0.0' &#41; ? 'ini_get' &#58; 'get_cfg_var';

	if &#40; @$ini_val&#40;'open_basedir'&#41; != '' &#41;
	&#123;
		if &#40; @phpversion&#40;&#41; < '4.0.3' &#41;
		&#123;
			die&#40;"open_basedir is set and your PHP version does not allow move_uploaded_file<br /><br />Please contact your server admin"&#41;;
		&#125;

		$move_file = 'move_uploaded_file';
	&#125;
	else
	&#123;
		$move_file = 'copy';
	&#125;

	$move_file&#40;$filetmp, $path . $pic_filename&#41;;

	@chmod&#40;$path . $pic_filename, 0777&#41;;


	// --------------------------------
	// Well, it's an image. Check its image size
	// --------------------------------

	$pic_size = getimagesize&#40;$path . $pic_filename&#41;;

	$pic_width = $pic_size&#91;0&#93;;
	$pic_height = $pic_size&#91;1&#93;;


	// --------------------------------
	// This image is okay, we can cache its thumbnail now
	// --------------------------------

	if&#40;$pic_filetype != '.gif'&#41;
	&#123;
		$gd_errored = FALSE;

		switch &#40;$pic_filetype&#41;
		&#123;
			case '.jpg'&#58;
				$read_function = 'imagecreatefromjpeg';
				break;
			case '.png'&#58;
				$read_function = 'imagecreatefrompng';
				break;
		&#125;

		$src = @$read_function&#40;$path  . $pic_filename&#41;;

		if &#40;!$src&#41;
		&#123;
			$gd_errored = TRUE;
			$pic_thumbnail = '';
		&#125;
		else if&#40; &#40;$pic_width > $config_thumb_width&#41; or &#40;$pic_height > $config_thumb_height&#41; &#41;
		&#123;
			// Resize it
			if &#40;$pic_width > $pic_height&#41;
			&#123;
				$thumbnail_width = $config_thumb_width;
				$thumbnail_height = $config_thumb_width * &#40;$pic_height/$pic_width&#41;;
			&#125;
			else
			&#123;
				$thumbnail_height = $config_thumb_height;
				$thumbnail_width = $config_thumb_height * &#40;$pic_width/$pic_height&#41;;
			&#125;

			$thumbnail = @imagecreatetruecolor&#40;$thumbnail_width, $thumbnail_height&#41;;

			$resize_function = 'imagecopyresampled';

			@$resize_function&#40;$thumbnail, $src, 0, 0, 0, 0, $thumbnail_width, $thumbnail_height, $pic_width, $pic_height&#41;;
		&#125;
		else
		&#123;
			$thumbnail = $src;
		&#125;

		if &#40;!$gd_errored&#41;
		&#123;
			$pic_thumbnail = $pic_filename;

			// Write to disk
			switch &#40;$pic_filetype&#41;
			&#123;
				case '.jpg'&#58;
					@imagejpeg&#40;$thumbnail, $thumb_path . $pic_thumbnail, $resizequality&#41;;
					break;
				case '.png'&#58;
					@imagepng&#40;$thumbnail, $thumb_path . $pic_thumbnail&#41;;
					break;
			&#125;

			@chmod&#40;$thumb_path . $pic_thumbnail, 0777&#41;;

		&#125; // End IF $gd_errored

	&#125; // End Thumbnail Cache


  // --------------------------------------
  // OK lets resize the original picture
  // --------------------------------------

  if&#40;$pic_filetype != '.gif'&#41;
  &#123;
    $gd_errored = FALSE;

    switch &#40;$pic_filetype&#41;
    &#123;
      case '.jpg'&#58;
        $read_function = 'imagecreatefromjpeg';
        break;
      case '.png'&#58;
        $read_function = 'imagecreatefrompng';
        break;
    &#125;

    $src = @$read_function&#40;$path  . $pic_filename&#41;;

    if &#40;!$src&#41;
    &#123;
      $gd_errored = TRUE;
      $pic_resize = '';
    &#125;
    else if&#40; &#40;$pic_width > $config_width&#41; or &#40;$pic_height > $config_height&#41; &#41;
    &#123;
      // Resize it
      if &#40; &#40;&#40;$pic_width / $pic_height&#41; > &#40;$config_width / $config_height&#41;&#41; &#41;
      &#123;
        $resize_width = $config_width;
        $resize_height = $config_width * &#40;$pic_height/$pic_width&#41;;
      &#125;
      else
      &#123;
        $resize_height = $config_height;
        $resize_width = $config_height * &#40;$pic_width/$pic_height&#41;;
      &#125;

      $resize = @imagecreatetruecolor&#40;$resize_width, $resize_height&#41;;

      $resize_function = 'imagecopyresampled';

      @$resize_function&#40;$resize, $src, 0, 0, 0, 0, $resize_width, $resize_height, $pic_width, $pic_height&#41;;
    &#125;
    else
    &#123;
      $resize = $src;
    &#125;

    if &#40;!$gd_errored&#41;
    &#123;
      $pic_resize = $pic_filename;

      // Write to disk
      switch &#40;$pic_filetype&#41;
      &#123;
        case '.jpg'&#58;
          @imagejpeg&#40;$resize, $path . $pic_resize, $resizequality&#41;;
          break;
        case '.png'&#58;
          @imagepng&#40;$resize, $path . $pic_resize&#41;;
          break;
      &#125;

      @chmod&#40;$path . $pic_resize, 0777&#41;;

    &#125; // End IF $gd_errored

  &#125; // End Picture Resize

      echo "Datei ist auf dem Server! <br><br>"; 
      echo "Url des großen Bildes&#58; <a href="$deindomain$path$pic_filename" target="_blank">".$deindomain.$path.$pic_filename;
	  echo "</a> <br><img src="$deindomain$path$pic_filename"><br><br>";
      echo "Url des Vorschaubildes&#58; <a href="$deindomain$thumb_path$pic_filename" target="_blank">".$deindomain.$thumb_path.$pic_filename;
	  echo "</a> <br><img src="$deindomain$thumb_path$pic_filename">";

   &#125; 
&#125; else &#123; ?>

<form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
<input type="hidden" name="MAX_FILE_SIZE" value="4000000">
<br>
<strong>File Upload</strong> <br>
<br>
<input name="pic_file" type="file" size=40>
<br>
<br>
<input type="submit" name="action" value="Speichern">
</form>
<?
 &#125;
	// -----------------------------------------
	// Das Script kann unter Verwendung
	// dieses Vermerks uneingeschränkt
	// genutzt / verändert werden.
	//  © www.marc-gutt.de
	// -----------------------------------------
?>
</body>
</html>

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag