ユーザーが単一の画像フィールドを使用して最大 48 枚の写真をアップロードできる機能が 1 つあります。
一度に 48 枚の画像をアップロードするときは、ajax 関数を呼び出しています。Ajax 呼び出しは、PHP の getimagesize 関数を使用して画像の幅と高さをチェックします。
アップロードする画像を 48 枚選択すると、20 ~ 25 枚の画像をアップロードした後、getimagesize 関数が、サイズ、幅、高さなどを含む配列ではなく false を返すことがあります。
JS コード
$('#multi_file_upload').change(function(e){
var file_id = e.target.id;
var form_data = new FormData();
var file_name_arr = new Array();
var process_path=site_url+'public/uploads/';
for(i=0;i<$("#"+file_id).prop("files").length;i++){
/* check whether remaining count reaches 0 */
var file_data = $("#"+file_id).prop("files")[i];
form_data.append("file_name", file_data);
$("#sortable-new li").each(function(n, element){
var tid = $(this).children('div').attr('id');
if($.trim( $("#"+tid).html() ).length == 0) {
html_div = tid;
return false;
}
});
if($.trim( $("#"+html_div).html() ).length == 0) {
$("#"+html_div).parents('li').removeClass('additional-photo ui-state-disabled');
$("#"+html_div).html('<img src="<?php echo $site_image_url;?>ajax-loader-showcase.gif" />');
if(check_multifile_logo($("#"+file_id).prop("files")[i]['name'])){
$.ajax({
//url : site_url + "inc/upload_image.php?width=96&height=60&show_small=1",
url : site_url + "inc/upload_contact_info.php?width=<?php echo $assoc_width?>&height=<?php echo $assoc_height?>&filetype=multiple_file_upload",
cache : false,
contentType : false,
processData : false,
async:false,
data : form_data,
type : 'post',
success : function(data) {
if(data != '') {
if(data==1){
alert("Image should not be smaller than <?php echo $assoc_width?> pixels wide by <?php echo $assoc_height?> pixels high.");
$("#"+html_div).html('');
//$("#"+html_div).parents('li').addClass('additional-photo ui-state-disabled');
} else {
remaining_cnt--;
multifile_cnt++;
if(multifile_cnt > 29) {
$(".galleryBox").css('min-height','845px');
$('.additional-photo').show();
}
$("#"+html_div).parents('li').addClass('ui-state-highlight');
$("#"+html_div).css('background-color', '#2B1F19');
//$("#"+html_div).html('<img src="'+process_path +'96x60-' +data+'" width="96" height="60" />');
$("#"+html_div).html('<img src="'+ process_path +data+'" width="102" height="68" class="crop-image">');
$('#'+html_div).append('<img src="<?php echo $site_url;?>public/uploadify/uploadify-cancel.png" class="cancel_multiple_file" >');
setTimeout(function(){$("#"+html_div).css('background-color', 'transparent');},2000);
$('#btn_btop').fadeIn();
}
} else {
alert(data);
}
}
});
} else {
$("#"+html_div).html('');
alert('We only accept JPG, JPEG, PNG, GIF and BMP files');
}
}
}
});
PHP コード (ajax 呼び出し)
$file = time() . $_FILES['file_name']['name'];
$upload_file_path = $site_path . "public/uploads/temp/";
$filetype = $_REQUEST['filetype'];
/* get width/height of image */
$get_image_info = getimagesize($_FILES['file_name']["tmp_name"]);
$image_width = $get_image_info[0];
$image_height = $get_image_info[1];
/* get required width/height */
$width = mysql_real_escape_string($_REQUEST['width'], $CON);
$height = mysql_real_escape_string($_REQUEST['height'], $CON);
$method = mysql_real_escape_string($_REQUEST['method'], $CON);
$show_small = isset($_REQUEST['show_small']) ? mysql_real_escape_string($_REQUEST['show_small'], $CON) : '0';
if ($image_width < $width || $image_height < $height) {
echo 1;
exit;
}
私を助けてください