时间:2021-07-01 10:21:17 帮助过:21人阅读
|
php 上传文件并生成缩略图的代码,分为单文件与多文件上传,并可以生成缩略图,确实不错,建议大家参考学习下。
完整代码如下。
*
******************************************************/
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;
}
?> |