Heim > Backend-Entwicklung > PHP-Tutorial > php上传文件并生成缩略图的函数

php上传文件并生成缩略图的函数

WBOY
Freigeben: 2016-07-25 09:00:32
Original
1369 Leute haben es durchsucht
php 上传文件并生成缩略图的代码,分为单文件与多文件上传,并可以生成缩略图,确实不错,建议大家参考学习下。

完整代码如下。

<?php
/****************************************************
* 返回值:失败:false; 成功:路径. 
* UpLoadFileOne(file元素名, 文件夹, 文件类型, 大小).
* 完成一个文件上传功能的函数
* site http://bbs.it-home.org
****************************************************/
function UpLoadFileOne($input, $path='upload', $ftype='gif,jpg,png', $fsize=2){
if(strrpos($path, '/') < strlen($path)-1) $path .= '/';   //上传文件夹.
$Atype = explode(',', $ftype);      //文件类型.
$fsize = $fsize*1048576;            //(1024*1024==1048576=1M)限文件大小,按字节.
$fileInfo = $_FILES[$input];        //文件信息
$name = $fileInfo['name'];          //客户端机器文件的原名称。
$size = $fileInfo['size'];          //上传文件的大小,单位为字节。
$type = $fileInfo['type'];          //上传文件类型.
$tmp_name = $fileInfo['tmp_name']; //文件被上传后在服务端储存的临时文件名。
$error = $fileInfo['error'];        //结果错误信息.
if($error == 0){
     $type = MyFileType($type);      //检测上传文件类型
   $myfile = CreatMyFile($path);   //创建文件夹
   if($myfile==false) return false;
     else $path = $myfile.MakeFname($type);   //文件路径.文件名
   if(in_array($type,$Atype) && $size<=$fsize && is_uploaded_file($fileInfo['tmp_name'])){
     if(@move_uploaded_file($tmp_name, $path)) return str_replace(array('../','./'), '', $path);
     else return false;
     }else return false;
}else return false;
}
/*****************************************************
* 完成多个文件上传功能的函数: http://bbs.it-home.org
* UpLoadFileAll(file元素名,路径,类型,大小)
* <input name='pic[]' id='pic' type='file' size='25'>
* <input name='pic[]' id='pic' type='file' size='25'>
******************************************************/
function UpLoadFileAll($input='UpPic', $path='upload', $ftype='jpg,gif,png', $fsize=2){
$fileInfo = $_FILES[$input];                           //文件信息
if(strrpos($path, '/') < strlen($path)-1) $path .= '/';   //上传文件夹.
$myfile = CreatMyFile($path);                             //创建文件夹
if($myfile==false) return false;
$Atype = explode(',', $ftype);                            //文件类型.
$fsize = $fsize*1048576;                                  //(1024*1024==1048576=1M)限文件大小,按字节. 
   $js = "以下文件上传成功:\\n\\n";
if(is_array($fileInfo["error"])){
   foreach ($fileInfo["error"] as $key => $error){
     if ($error == 0) {      
     $name = $fileInfo["name"][$key];              //客户端机器文件的原名称.
     $size = $fileInfo["size"][$key];              //上传文件的大小,单位为字节.
     $type = $fileInfo["type"][$key];              //上传文件类型.
     $tmp_name = $fileInfo["tmp_name"][$key];      //文件被上传后在服务端储存的临时文件名.
     $type = MyFileType($type);                    //检测上传文件类型.
     $path = $myfile.MakeFname($type);             //文件路径包括文件名.     
     if(in_array($type, $Atype) && $size<=$fsize){
     if(@move_uploaded_file($tmp_name, $path)){
      $array[] = $path;
      $js .= " ".$name." 上传成功 !\\n";
        }
     }
     }
   }
}
echo "";
return $array;
}
/*****************************************************************************
* 重设图片尺寸大小:ResizeImage(原图片路径,缩略图(最大)宽度,缩略图(最大)高度)
* 返回值: 
*     失败返回: FLASH.
*     成功返回:缩略图路径.
*****************************************************************************/
function ResizeImage($path, $maxwidth, $maxheight){
$picS = substr($path, -3);
$name = substr($path, 0, strrpos($path, '.')).'_S';
switch($picS){
case 'jpg':
    $im = @imagecreatefromjpeg($path); 
    break;
case 'gif':
    $im = @imagecreatefromgif($path); 
    break;
default:
    $im = @imagecreatefrompng($path);
}
$width = imagesx($im); 
$height = imagesy($im); 
if(($maxwidth && $width > $maxwidth) || ($maxheight && $height > $maxheight)){
   if($maxwidth && $width > $maxwidth){
    $widthratio = $maxwidth/$width; 
    $RESIZEWIDTH=true; 
    }//end if
    if($maxheight && $height > $maxheight){
     $heightratio = $maxheight/$height; 
     $RESIZEHEIGHT=true; 
    }//end if
    if($RESIZEWIDTH && $RESIZEHEIGHT){
     if($widthratio < $heightratio){
      $ratio = $widthratio; 
     }else{
      $ratio = $heightratio; 
     } 
    }elseif($RESIZEWIDTH){
     $ratio = $widthratio; 
    }elseif($RESIZEHEIGHT){
     $ratio = $heightratio; 
    }//end if
    $newwidth = $width * $ratio; 
    $newheight = $height * $ratio; 
    if(function_exists("imagecopyresampled")){
     $newim = imagecreatetruecolor($newwidth, $newheight); 
     imagecopyresampled($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
    }else{
     $newim = imagecreate($newwidth, $newheight); 
     imagecopyresized($newim, $im, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
    }//end if
}else{
   $newim = $im;
}//end if
       switch($picS){
     case 'jpg':
        $PicPath = $name.".jpg";
     if(imagejpeg($newim, $PicPath)){
       imagedestroy($newim);
     return str_replace(array('../','./'), '', $PicPath);
     }else{
     return false;
     }
     break;
     case 'gif':
        $PicPath = $name.".gif";
     if(imagegif($newim, $PicPath)){
       imagedestroy($newim);
     return str_replace(array('../','./'), '', $PicPath);
     }else{
     return false;
     }
     break;
     default:
        $PicPath = $name.".png";
        if(imagepng($newim, $PicPath)){
       imagedestroy($newim);
     return str_replace(array('../','./'), '', $PicPath);
     }else{
     return false;
     }
    }//end switch
}//end function
/**************************
* 文件属性 $type = 文件属性
***************************/
function MyFileType($type) {
    $type = strtolower($type);
switch($type) {
      //OFFICE
   case 'application/msword' : 
   $type = 'doc';
   break;
   case 'application/vnd.ms-excel':
   $type = 'xls';
   break;
   case 'application/vnd.ms-powerpoint': 
   $type = 'ppt';
   break;
   //压缩
   case 'application/octet-stream': 
   $type = 'rar';
   break;
   //文本
   case 'text/plain': 
   $type = 'txt';
   break;
   //图片
   case 'image/pjpeg': 
   $type = 'jpg';
   break;
   case 'image/gif': 
   $type = 'gif';
   break;
   case 'image/x-png': 
   $type = 'png';
   break;
   case 'image/bmp': 
   $type = 'bmp';
   break;
   default : 
   $type = 'err';
}
return $type; //返回文件类型.
}
/******************
* 创建文件夹(路径)
*******************/
function CreatMyFile($fname=''){
switch($fname){
   case '':
    break;
   default:
    if(strrpos($fname, '/') < strlen($fname)-1) $fname .= '/';
}
$fname .= date("Y-m");
if(is_dir($fname)) return $fname.'/';
   if(mkdir($fname, 0755)==false) return false;
//if(chmod($fname, 0777)==false) return false;
return $fname.'/';
}
/*****************************
* 生成文件名
* $fname ==> 文件名称
* $ftype   ==> 文件类型
*****************************/
function MakeFname($ftype) {  
$fname = date("mdHis").'_'.rand(100000, 999999);
return $fname.'.'.$ftype;
}
?>
Nach dem Login kopieren


Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage