猿问

shopImooc 这个工程我在公司电脑做好了添加商品那部分 在公司运行也是没问题的 我把整个工程文件夹复制到我家里的电脑里面 上传就报错

upload.func.php的代码

<?php

/***
         构建上传文件信息函数
    */
function buildInfo(){
    if(!$_FILES){
        return ;
    }
    $i=0;
    foreach($_FILES as $v){
        //如果是单文件
        if(is_string($v['name'])){ //判断$v是一个数字还是字符串 如果是字符串就是 单文件上传 如果是数组就是多文件上传
            $files[$i]=$v;
            $i++;
        }else{
            //多文件
            foreach($v['name'] as $key=>$val){
                $files[$i]['name']=$val;
                $files[$i]['size']=$v['size'][$key];
                $files[$i]['tmp_name']=$v['tmp_name'][$key];
                $files[$i]['error']=$v['error'][$key];
                $files[$i]['type']=$v['type'][$key];
                $i++;
            }
        }
    }
    return $files;
}
/***
     uploadFile()文件上传函数
    @param  string  $path 上传图片到这个文件夹下
    @param  array   $allowExt  文件类型数组
    @param  string  $maxSize   文件大小
    @param  boolean $imgFlag   判断是否是真实的图片文件(没有改过的文件名后缀)
*/
function uploadFile($path="uploads",$allowExt=array("gif","jpeg","png","jpg","wbmp"),$maxSize=51200,$imgFlag=true){
    if(!file_exists($path)){   //如果uploads文件夹不存在
        mkdir($path,755,true);   //mkdir() 函数创建目录。 将默认的访问权限0777 改为写入权限755
    }
    $i=0;
    $files=buildInfo();   //调用文件信息函数 实现单文件和多文件混传 或者单文件上传 或者多文件上传
    if(!($files&&is_array($files))){
        return ;
    }
    //判断错误信息
    foreach($files as $file){
        if($file['error']===UPLOAD_ERR_OK){  //没有错误
            $ext=getExt($file['name']);  //得到文件扩展名
            //检测文件的扩展名
            if(!in_array($ext,$allowExt)){  
                exit("非法文件类型");
            }
            //校验是否是一个真正的图片类型
            if($imgFlag){
                //验证图片是否是一个真正的图片类型
                //getimagesize()取得 GIF、JPEG 及 PNG 三种 WWW 上图片的高与宽,
                if(!getimagesize($file['tmp_name'])){  
                    exit("不是真正的图片类型");
                }
            }
            //上传文件的大小
            if($file['size']>$maxSize){ //不能大于500kb
                exit("上传文件过大");
            }
            if(!is_uploaded_file($file['tmp_name'])){ //如果是post上传
                exit("不是通过HTTP POST方式上传上来的");
            }
            $filename=getUniName().".".$ext;  //得到文件扩展名
            $destination=$path."/".$filename;  //文件路径
            //move_uploaded_file() 函数将上传的文件移动到新位置。 若成功,则返回 true,否则返回 false。
            if(move_uploaded_file($file['tmp_name'], $destination)){
                $file['name']=$filename;  //文件名 = 唯一的字符串拼上文件扩展名
                unset($file['tmp_name'],$file['size'],$file['type']);  //销毁无用的文件信息
                $uploadedFiles[$i]=$file;
                $i++;
            }
        }else{
            switch($file['error']){
                    case 1:
                        $mes="超过了配置文件上传文件的大小";//UPLOAD_ERR_INI_SIZE
                        break;
                    case 2:
                        $mes="超过了表单设置上传文件的大小";            //UPLOAD_ERR_FORM_SIZE
                        break;
                    case 3:
                        $mes="文件部分被上传";//UPLOAD_ERR_PARTIAL
                        break;
                    case 4:
                        $mes="没有文件被上传1111";//UPLOAD_ERR_NO_FILE
                        break;
                    case 6:
                        $mes="没有找到临时目录";//UPLOAD_ERR_NO_TMP_DIR
                        break;
                    case 7:
                        $mes="文件不可写";//UPLOAD_ERR_CANT_WRITE;
                        break;
                    case 8:
                        $mes="由于PHP的扩展程序中断了文件上传";//UPLOAD_ERR_EXTENSION
                        break;
                }
                echo $mes;
            }
    }
    return $uploadedFiles;
}

    //服务器端PHP配置文件
    //file_uploads=On   支持通过HTTP POST方式上传文件
    //upload_tmp_dir="E:\xampp\tmp"  临时文件保存的路径
    //max_file_uploads=20   表单上传的文件的最大大小默认为2M
    //post_max_size=8M      表单已post方式发送数据的最大值默认是8M
        
    //客户端进行配置
    //<input type="hidden" name="MAX_FILE_SIZE" value="1024"/>
?>



/////////////////////////////////////

image.func.php文件的代码

<?php
    require_once '../include.php'; //包含字符串处理文件
    
    
    /***
      @param  $sess_name session中保存验证码的名字
      @param  $type  验证码类型
      @param  $length  验证码长度
      @param  $pixel   默认需不需要干扰元素 true需要 false不需要
     */
    function verifyImage($type=1,$length=4,$sess_name = 'verify'){
        $chars = bulidRandomString(1,4);  //调用随机数函数
        $_SESSION[$sess_name] = $chars;
        echo $_SESSION[$sess_name];
    }
    
    /***
     *  生成缩略图函数thumb()
        @param  string  $filename 传入的图像
        @param  string  $destination 文件夹
        @param  int  $dst_w 画布宽
        @param  int  $dst_h 画布高
        @param  boolean  $isReservedSource 是否删除原文件
        @param  number  $scale 缩放比例
        return  string $dstFilename   返回文件名
    */
    function thumb($filename,$destination=null,$dst_w=null,$dst_h=null,$isReservedSource=true,$scale=0.5){
        //得到原图像的宽高和类型 赋值给变量$src_w,$src_h,$imagetype
        list($src_w,$src_h,$imagetype) = getimagesize($filename);
        //如果没有传比例就用默认的缩放比例
        //$scale=0.5; //默认的缩放比例
        //is_null 检测是否为空
        if(is_null($dst_w)||is_null($dst_h)){
            $dst_w=ceil($src_w*$scale);  //新图像宽=原图像宽乘以缩放比例
            $dst_h=ceil($src_h*$scale);  //新图像高=原图像高乘以缩放比例
        }
        //image_type_to_mime_type — 取得 getimagesize,exif_read_data,exif_thumbnail,exif_imagetype 所返回的图像类型的 MIME 类型 返回文件类型
        $mime = image_type_to_mime_type($imagetype);
        $createFun = str_replace("/", "createfrom", $mime);  //$createFun = imagecreatefromjpeg
        $outFun = str_replace("/",null,$mime);                 //$outFun = imagejpeg
        //imagecreatetruecolor 新建一个画布资源
        $src_image = $createFun($filename);  //创建原图像资源
        //imagecreatetruecolor 新建一个画布资源
        $dst_image = imagecreatetruecolor($dst_w, $dst_h);
        /***
         *  重采样图片并拷贝
            bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )
            $dst_image:新建的图片
            $src_image:需要载入的图片
            $dst_x:设定需要载入的图片在新图中的x坐标
            $dst_y:设定需要载入的图片在新图中的y坐标
            $src_x:设定载入图片要载入的区域x坐标
            $src_y:设定载入图片要载入的区域y坐标
            $dst_w:设定载入的原图的宽度(在此设置缩放)
            $dst_h:设定载入的原图的高度(在此设置缩放)
            $src_w:原图要载入的宽度
            $src_h:原图要载入的高度
            imagecopyresampled()用来改变图像大小
        */
        imagecopyresampled($dst_image, $src_image, 0, 0, 0, 0, $dst_w, $dst_h, $src_w, $src_h);
        //file_exists() 函数检查文件或目录是否存在
        //dirname() 函数返回路径中的目录部分。
        /***
            mkdir() 函数创建目录。
            mkdir(path,mode,recursive,context)
            path    必需。规定要创建的目录的名称。
            mode    必需。规定权限。默认是 0777。 改为755文件可写
            
        */
        if($destination&&!file_exists(dirname($destination))){ //如果文件存在  目录也不存在
            mkdir(dirname($destination),755,true); //创建目录
        }
        //getUniName()生成唯一字符串函数.文件扩展名
        $dstFilename = $destination==null?getUniName().".".getExt($filename):$destination;
        $outFun($dst_image,$dstFilename);
        imagedestroy($src_image); //销毁原图像
        imagedestroy($dst_image); //销毁新图像
        //$isReservedSource = false; //默认不保留原文件
        if(!$isReservedSource){ //如果不需要保留原文件
            unlink($filename);  //删除原文件
        }
        return $dstFilename;  //返回文件名
    }
?>



qq_D调_1
浏览 1979回答 1
1回答
随时随地看视频慕课网APP
我要回答