0

ユーザーが単一の画像フィールドを使用して最大 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;
}

私を助けてください

4

1 に答える 1

0

$_FILES['file']['tmp_name'];サーバー上のファイルの一時ファイル名が含まれます。これは、ファイルを処理するまでのサーバー上の単なるプレースホルダーです

getimagesizeFILE_NAME_AFTER_UPLOADING (OR) 'LOCAL_FILE' を入力する必要があります。

交換

$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($upload_file_path.$file);

$file = time() . $_FILES['file_name']['name'];
$upload_file_path = $site_path . "public/uploads/temp/";
$filetype = $_REQUEST['filetype'];
move_uploaded_file($_FILES["file"]["tmp_name"],$upload_file_path.$file);

/* get width/height of image */
$get_image_info = getimagesize($upload_file_path.$file);

于 2013-08-23T09:49:10.493 に答える