验证文件上传状态

/**

 * 验证文件上传状态

 * @param array $file_info 上传的文件信息,$_FILES['name']

 * @return string 错误信息failed_msg

 * @author songzy

 */

function check_upload($file_info = null, $max_size = 0)

{

    if (!isset($file_info)) {

        return '没有找到上传的文件';

    }

    if (isset($file_info['error']) && $file_info['error'] != 0) {

        $error_mapping = array(

            0   =>  "上传成功!",

            1   =>  "服务器限制的上传文件大小为".ini_get('upload_max_filesize'),

            2   =>  "上传文件大小超过了表单中MAX_FILE_SIZE的限制!",

            3   =>  "只有部分文件被上传了,请重试!",

            4   =>  "没有选择要上传的文件。",

            6   =>  "服务器上传临时目录不存在,请联系系统管理员。",

            7   =>  "文件无法写入磁盘,请联系系统管理员。",

            8   =>  "某个PHP扩展导致上传失败,请联系系统管理员。"

        );


        $error_id = $file_info['error'];


        return '上传失败,'.$error_mapping[$error_id];

    }


    if (empty($file_info['size'])) {

        return '选中的文件大小为空';

    }

    $image_max_size = $max_size ? $max_size : Config::get('image_max_size');

    $file_extension_name = pathinfo($file_info['name'], PATHINFO_EXTENSION);

    if ($image_max_size && $file_info['size'] > $image_max_size && in_array($file_extension_name, Config::get('allow_image_type'))) {

        return '上传文件的大小不得超过'.conversion($image_max_size);

    }


    if (empty($file_info['name'])) {

        return '选中的文件没有文件名';

    }


    if (empty($file_info['tmp_name'])) {

        return '上传到服务器临时目录失败';

    }


    return '';

}


/**

 * 验证多文件上传状态(以path[]数组形式作为file的name上传的文件组)

 * @param $file_info 上传的文件信息,$_FILES['name']

 * @return array 对应索引的错误信息数组array(0=>'failed_msg')

 * @author songzy

 */

function check_multiple_upload($files_info)

{

    $failed_msg_arr = array();

    foreach ($files_info['name'] as $k=>$v) {

        if (empty($v)) continue;


        $file_info = array(

            'name'      => $files_info['name'][$k],

            'tmp_name'  => $files_info['tmp_name'][$k],

            'size'      => $files_info['size'][$k],

            'type'      => $files_info['type'][$k],

            'error'     => $files_info['error'][$k]

        );


        $failed_msg = check_upload($file_info);

        if (!empty($failed_msg)) {

            $failed_msg_arr[$k] = '第'.($k+1).'个文件上传失败:'.$failed_msg;

        }

    }

    return $failed_msg_arr;

}

本博客所有文章如无特别注明均为原创。作者:长颈鹿复制或转载请以超链接形式注明转自 SZY
原文地址《验证文件上传状态

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)