Задать вопрос
Winultra
@Winultra

Как тут сократить количество загружаемых картинок?

Ну вообщем в сути вопроса сказана проблема.
есть вот такая html форма:
<form id="imageform" method="post" enctype="multipart/form-data" action='action/UploadImgMessages.php' style="clear:both;">
						<div id='imageloadbutton' title = "Загрузить фотографии">
							<input type="file" name="photos[]" id="photoimg" multiple="true">
						</div>
					</form>

есть вот такой javascript:
$(document).ready(function() { 
		
            $('#photoimg').die('click').live('change', function()			{ 
			//$("#preview").html('');
			    
				$("#imageform").ajaxForm({target: '#preview', 
				     beforeSubmit:function(){ 
					$("#imageloadstatus").show();
					 $("#imageloadbutton").hide();
					 }, 
					success:function(){ 
					 $("#imageloadstatus").hide();
					 $("#imageloadbutton").show();
					 $(".mesagesUsers").height($(window).height()-545);
					}, 
					error:function(){ 
					 $("#imageloadstatus").hide();
					$("#imageloadbutton").show();
					} }).submit();
					
		
			});
        });

и вот такой обработчик php:
error_reporting(0);
session_start();
include('../config.php');
define ("MAX_SIZE","9000");
function getExtension($str)
{
         $i = strrpos($str,".");
         if (!$i) { return ""; }
         $l = strlen($str) - $i;
         $ext = substr($str,$i+1,$l);
         return $ext;
}


$valid_formats = array("jpg", "png", "gif", "jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
{
	
    $uploaddir = "img/";
    foreach ($_FILES['photos']['name'] as $name => $value)
    {
	
        $filename = stripslashes($_FILES['photos']['name'][$name]);
        $size=filesize($_FILES['photos']['tmp_name'][$name]);
          $ext = getExtension($filename);
          $ext = strtolower($ext);
     	
         if(in_array($ext,$valid_formats))
         {
	       if ($size < (MAX_SIZE*2048))
	       {
		   $image_name=time().$filename;
		   echo "<img src='".$uploaddir.$image_name."' class='imgList'>";
		   $newname="../".$uploaddir/$image_name;
           
           if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], "../$uploaddir/$image_name")) 
           {
	       $time=time();
	       //mysql_query("INSERT INTO user_uploads(image_name,user_id_fk,created) VALUES('$image_name','$session_id','$time')");
	       }
	       else
	       {
	        echo '<span class="imgList">Вы превысили предельный размер! так что перемещение неудачной!</span>';
            }

	       }
		   else
		   {
			echo '<span class="imgList">Вы превысили предельный размер!</span>';
          
	       }
       
          }
          else
         { 
	     	echo '<span class="imgList">Неизвестный расширение!</span>';
           
	     }
           
     }
}
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
В js кол-во выбранных картинок вы можете проверить так:
$('#photoimg').die('click').live('change', function()			{ 
    var files = this.files;
    if (files.length > 5) {
       console.log("Вы превысили лимит на кол-во файлов!");
       return;
    }
    //Далее идет ваш код
});

И я бы на вашем месте перешел бы на новую версию jQuery и не использовал бы ф-ю live она признана устаревшей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы