php用jquery-ajax上传多张图片限制图片大小

php用jquery-ajax上传多张图片限制图片大小

复制代码
/**
 * 上传图片,默认大小限制为3M
 * @param String $fileInputName
 * @param number $size
 */
public function processUpload($fileInputName,$size=3145728)
{
    $result = array('status'=>0, 'errcode'=>null, 'group'=>'', 'path'=>'', 'site'=>'', 'size'=>0);
    $file = $_FILES[$fileInputName];
    //用filesize函数获取文件大小,filesize这个内置函数不能直接放$fileInputName或者$file['name'],要用$file['tmp_name'],或者直接用$file['size']
    $bytes = $file['size'];
    if($bytes==0 || $bytes > $size){
        $result['status'] = -1;
        $result['size'] = $bytes;
        return $result;
    }
    $fileMIME = $file['type'];
    $originFilename = $file['name'];
    $tmpFileDir = C('FILE_UPLOAD_SWAP_DIR');
    $fileName = CommonUtil::generateUUid();
    switch ($fileMIME)
    {
        case 'image/jpeg': //jpeg jpg jpe
            $tmpFile = $tmpFileDir.$fileName.'.jpg';
            break;
        case 'application/x-jpg':
            $tmpFile = $tmpFileDir.$fileName.'.jpg';
            break;
        default:
            $result['status'] = 1;
            $result['group'] = $tmpFileDir.$fileName;
            $result['site'] = $fileMIME;
            return $result;
    }
    //......
}
复制代码

 上图是打印出来的$file属性
 
下面是控制器代码
复制代码
/**
 * 上传多张图片公共方法
 * fileName 为input的name属性
 */
public function doUploadJpgMultiple()
{
    $filename = I('get.fileName','');
    $uploader = new UploadJpgUtil();
    $result = $uploader->processUpload($filename);
    echo json_encode($result);
}
复制代码

 

下面是ajax代码

复制代码
//一个页面上传多张图片
function ajaxUploadMultiple(j) {
    $.ajaxFileUpload({
        url : base_url+"/UploadImgUtil/doUploadJpgMultiple?fileName=fileToUpload"+ j,
        secureuri : false,
        fileElementId : "fileToUpload"+ j,// file控件id
        type: "POST",
        dataType: 'json',
        success : function(data, status) {
            if (typeof (data.status) != 'undefined') {
                if (data.status == -1) {
                    alert('上传图片不能超过规定大小');
                }else if (data.status == 1) {
                    alert('上传图片不是JPG格式');
                }else if (data.status != 0) {
                    alert('status='+data.status + ' errcode=' + data.errcode);
                }
                else {
                    var fileUrl = 'http://' + data.site + '/' + data.group
                        + '/' + data.path;
                    $('#flatImgthumb'+ j).attr('src', fileUrl);
                    $('#hidFlatImgthumb'+ j).val(data.group + '/' + data.path);
                }
            }
        },
        error : function(data, status, e) {
            alert(e);
        }
    });
    return false;
}
复制代码

 

posted @   大自然的流风  阅读(1866)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2014-06-15 PHP empty、isset、isnull的区别
2014-06-15 php抛出异常
点击右上角即可分享
微信分享提示