webForumDet fria alternativet

Multi-upload + skapa miniatyr?

4 svar · 712 visningar · startad av Guldstrand

GuldstrandMedlem sedan juli 20041 271 inlägg
#1

Har följande kod för att ladda upp flera bilder samtidigt.

<?php 

error_reporting(E_ALL);
ini_set("display_errors", "1"); 

$dir       = 'temp/';
$filetyper = 'jpg, jpeg, gif, png';
$storlek   = 0;
 
print '<div id="upload"><h2>Multiupload:</h2>';
 
if(isset($_POST['submit'])) {
 
foreach($_FILES as $id => $value) {
 
if(!empty($value['name'])) {
 
  $typer     = explode(', ', $filetyper);
  $fil       = explode('.', $value['name']);
  $extension = $fil[sizeof($fil)-1];
  
  if(!in_array($extension, $typer)) {
  
    die('Endast filer av typerna '.$filetyper.' får laddas upp.');
   
  }
  
  if(is_uploaded_file($value['tmp_name'])) {
  
    move_uploaded_file($value['tmp_name'], $dir . $value['name']);
   $status[$value['name']] = 1;
   $storlek += $value['size'];
  }
  
}
 
}
  if($status) {
 
       print '<title>Bilder uppladdade</title><strong>Dessa bilder har blivit uppladdade:</strong><br />';
 
       foreach($status as $id => $value) {
 
            if($value == 1) { 
 
                print("<img src=\"temp/$id\" alt=\" $id \" title=\" $id \" width=\"200\"/><br /><br />\n"); 
 
            }
       }
      
	$storlek = $storlek / 1000;
       $storlek = number_format(round($storlek, 1),2);
 
       print '<strong>Total storlek:</strong> '.$storlek.'kb <br /><a href="bildtest.php">Gå tillbaka</a>'; 

// SPARA FILNAMNET I MYSQL 
include("inc/mysql.php");

$bild = db_escape($id); 
mysql_query("INSERT INTO bilder (filnamn) VALUES ('$bild')") or die (mysql_error());
  
  } else { 
  
       print 'Ingenting laddades upp <a href="bildtest.php">Gå tillbaks</a>';
      
  } 
 
 
} else {
 
  print("<title>Ladda upp bilder</title>");
  print '<form action="bildtest.php" method="post" enctype="multipart/form-data">';
  print '<input type="file" name="bild1" /><br />';    
  print '<input type="file" name="bild2" /><br />';   
  print '<input type="file" name="bild3" /><br />';   
  print '<input type="file" name="bild4" /><br />';   
  print '<input type="file" name="bild5" /><br />';   
  print '<input type="submit" name="submit" value="Lägg till bilder" />';
  print '</form>';
 
}
 
print '</div>';
?>

Koden fungerar bra, men skulle gärna vilja skapa miniatyrer av samtliga bilder också, (under uppladdningen).
Sedan undrar jag hur man sparar en titel till resp. bild, om jag lägger till "<input type="text" name="titel"/>".

Någon som har lust att hjälpa mig med detta? :r

ZaimanMedlem sedan dec. 20014 239 inlägg
#2

Flyttas från SQL

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

Jag hade istället använt ett script som skapar thumbnails "on-the-fly", då behöver du endast hålla reda på en fil när du t.ex. döper om eller tar bort bilder.

MeleaMedlem sedan juli 20033 147 inlägg
#4

Problemet med att parsa thumbnails "on-the-fly" är att det tar ett tag att konvertera alla bilder, speciellt om man har en sida med säg, 50 st små thumbnails.
Du kan ta en titt på http://www.verot.net/php_class_upload.htm för att ladda upp bilder med en viss storlek.

MeleaMedlem sedan juli 20033 147 inlägg
#5

Har faktiskt gjort exakt det du frågar efter till ett eget projekt med klassen jag länkade till.

upload.php

if ($_POST['action'] == 'image') {

	require_once('class.upload.php');

	$files = array();
	foreach ($_FILES['my_field'] as $k => $l) {
		foreach ($l as $i => $v) {
			if (!array_key_exists($i, $files)) 
				$files[$i] = array();
			$files[$i][$k] = $v;
		}
	}
	
	foreach ($files as $file) {
	
		$handle = new Upload($file);
	
		if ($handle->uploaded) {
			
			$filename = $handle->file_dst_name;
			
			mysql_query("insert into tbl (pic_name) values ('$filename')");
	
			$handle->image_resize			= true;
			$handle->image_ratio_y			= true;
			$handle->image_x				= 500;
			$handle->jpeg_quality			= 100;
			$handle->image_convert			= 'jpg';
	
			$handle->Process('./images/');
	
			if (!$handle->processed) {
				echo 'Error: ' . $handle->error . '';
			}
	
			$handle-> Clean();
	
		} else {
			echo 'Error: ' . $handle->error . '';
		}
		
	}

	header('Location: index.php');

}

.

<form enctype="multipart/form-data" method="post" action="upload.php">
<input type="hidden" name="action" value="image" />

<input type="file" size="32" name="my_field[]" value="" />
<input type="file" size="32" name="my_field[]" value="" />
<input type="file" size="32" name="my_field[]" value="" />
<input type="submit" name="Submit" value="upload" />
</form>
130 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)