Ъплоуд на повече от 1 снимки едновременно

Lenor

Registered
Здравейте. Досега използвах този код за ъллоуд, но ми се налага да качвам повече от една снимка едновременно чрез multiple, а не една по една. Когато добавя multiple се качва само първата снимка.

Код:
<div  id="div_za_izbor_na_failove" >
<h3><img src="images/camera-icon.png" />Добави изображения </h3>
<table  border="0" id="tabli4ka" ><tr><td>
<input type="file" id="file_1"  name="file_name_1" onchange="validaciq_na_izobrajeniqta()" [color=red]multiple[/color]  />
</td></tr></table>
</div>
<input type="hidden" id="hidden_value" value="1"  name="number_of_images" />
<input type="hidden" id="pone_edno_izobr" value="no"  name="at_least_one_pic" />
<input type="hidden" id="povtarqshti_se_izobrajeniq" value="no"  name="povtarqshti_izobrajeniq" />
<input type="button" onclick="choose_another_file()" id="add_image" /></br>

<input type="submit" value="Добави!"  name="submitche"  id="dobavi_zapis" disabled="disabled">

</form>

Код:
$number_of_images = $_POST['number_of_images']; // integer 
	$number_of_real_images = 0 ;
	$at_least_one_pic = false ;
	for($i = 1 ; $i <= $number_of_images ; $i++) // proverka dali izobshto ima edno izobrano izobrajenie
	{ 
		$file_name = $_FILES["file_name_$i"]["name"];
		
		if($file_name == "")
		{
			continue ;
		}
		else
		{
			$at_least_one_pic = true ; 
			$number_of_real_images++ ;
		}
		
	}
	//echo " Nomer na poleta za kachvane na izobrajeniq : $number_of_images <br/>"; // testov red
	//echo "Nomer na realnite izobrajeniq $number_of_real_images <br/> ";
	
	$masiv = array(); // masiv sudurjash imenata na failove i tehnite razshireniq
	for($i = 1 ; $i <= $number_of_images ; $i++)
	{	
		if($_FILES["file_name_$i"]["name"] == "")
		{
			continue ;
		}
		else
		{
			$masiv[] = $_FILES["file_name_$i"]["name"];
		}
			
	}

	
	for($i = 0 ; $i <  $number_of_real_images ; $i++)   // proverka da nqma povtarqshti se izobrajeniq
	{
		
		for($z = 0  ; $z < $number_of_real_images  ; $z++) 
		{	
			
			if($z == $i)
			{
				continue ;
			}
			else
			{
				
				if($masiv[$i]==$masiv[$z])
				{
					echo "Не можеш да качиш две повтарящи се изображения ! Име на повтарящото се изображение : ".$masiv[$i];
					exit ;
				}
				
			}
			
		}
		
		
	}
	
	if($at_least_one_pic == false)
	{
		echo "Не сте избрали изображение . Задължително е да изберете поне едно";
		exit ; 
	}
	else
	{
		$original_images_string ="" ;
		$small_images_string ="";
		$start = 1 ;
		$upload_folder_for_big_images="images/Big_images/";
		$upload_folder_for_small_images="images/Small_images/";
		// for cikul kopirash originalnoto izobrajenie i praveiki ot nego malko izobrajenie . Populva i gornite dva stringa i postavq sudurjanieto imm v baza danni kato referenciq
		// kum realnite izobrajeniq
		for($i = 1 ; $i <= $number_of_images  ; $i++) 
		{
			$file_name = $_FILES["file_name_$i"]["name"];
			if($file_name == "")
			{			
				continue ;
			}
			$extention = substr($file_name, -4) ;
			$path_plus_filename =$upload_folder_for_big_images.$latin_name."_pic_".$start.$extention ;
			$try_to_upload =	move_uploaded_file($_FILES["file_name_$i"]["tmp_name"] , "../".$path_plus_filename);
				if($try_to_upload == false)
				{
					echo "problem pri uploada na source image !!!!";
					exit ;				
				}
			$original_images_string  .= $path_plus_filename ;
			$original_images_string  .="|";
			
			resize_image("../".$path_plus_filename ,'210','180',$upload_folder_for_small_images.$latin_name."_pic_".$start.$extention  );
			$small_images_string .= $upload_folder_for_small_images.$latin_name."_pic_".$start.$extention ;
			$small_images_string .="|";
			$start++;
		}
	}
	$original_images_string =substr($original_images_string ,0 ,-1 ) ;
	$small_images_string =substr($small_images_string , 0 , -1 ) ;
 
Ако искаш да раотиш с няколко файла, то трябва да ги подадеш като масив. В случая - атрибута name="file_name_1" да стане name="file_name[]", като впоследствие в $_FILES ще имаш разширена структура на масива - $_FILES['file_name']['name']{индексен масив от имена}, $_FILES['file_name']['size']{индексен масив от размер}, $_FILES['file_name']['error']{индексен масив от грешки} за всеки един от качените фалове, като индексите съответстват по реда си...
 
Защо не упростиш малко нещата ..
PHP:
$files = $_FILES['file'];
foreach($files as $file)
{
   echo "Файл: ". $file['name'].'<br/>';
}
:idea: :?:
 
Реда е напълно безсмислен - проблема ти е, че не работиш с масиви от файлове - споменах го вече.
 

Back
Горе