Home  >  Article  >  Backend Development  >  An indefinite number of forms generate long abbreviations_PHP tutorial

An indefinite number of forms generate long abbreviations_PHP tutorial

WBOY
WBOYOriginal
2016-07-20 11:05:46776browse

Let’s take a look first, the example calling method:

Rendering:

Let’s take a look at the code. Upload the class first?/*
TITLE : CLASS Upload
FILE : class.upload.php
DESCRIPTION: To provide upload utility,
AUTHOR : Peng Zhang zpadmin()gmail.com http://blog.neten.de
BASED ON : whxbb whxbb()21cn.com
WRITED : 2005 NOV 20
MODIFIED : 2006 MAR 01
modified by psdshow (psdshow(at)yahoo.com.cn) 2007-11-30
LICENCE : GPL
REVISION : V1.0.2
*/
class Upload{
var $saveName;// Save name
var $savePath;// Save path
var $fileFormat = array('gif','jpg','doc','application/octet-stream');//File format & MIME limitation
var $overwrite = 0;//Overwrite mode
var $ maxSize = 0; // Maximum file bytes
var $ext; // File extension
var $thumb = 0; // Whether to generate thumbnails
var $thumbWidth = 130; // Thumbnails Width
var $thumbHeight = 130;//Thumbnail height
var $thumbPrefix = "_thumb_";// Thumbnail prefix
var $errno;//Error code
var $returnArray= array (); // Return information for all files
var $returninfo= array(); // Return information for each file


// Constructor
// @param $savePath File saving path
// @param $fileFormat file format limit array
// @param $maxSize maximum file size
// @param $overwriet whether to overwrite 1, allow overwriting 0, prohibit overwriting

function Upload($savePath, $fileFormat='',$maxSize = 0, $overwrite = 0) {
$this->setSavepath($savePath);
$this->setFileformat($fileFormat );
$this->setMaxsize($maxSize);
$this->setOverwrite($overwrite);
$this->setThumb($this->thumb, $this- >thumbWidth,$this->thumbHeight);
$this->errno = 0;
}

// Upload
// @param $fileInput webpageForm(form )
// @param $changeName Whether to change the file name
function run($fileInput,$changeName = 1){
if(isset($_FILES[$fileInput])){
$fileArr = $_FILES[$fileInput];
if(is_array($fileArr['name'])){//Upload multiple files with the same file domain name
for($i = 0; $ i < count($fileArr['name']); $i++){
$ar['tmp_name'] = $fileArr['tmp_name'][$i];
$ar['name' ] = $fileArr['name'][$i];
$ar['type'] = $fileArr['type'][$i];
$ar['size'] = $fileArr ['size'][$i];
$ar['error'] = $fileArr['error'][$i];
$this->getExt($ar['name'] );//Get the extension and assign it to $this->ext, it will be updated in the next cycle
$this->setSavename($changeName == 1 ? '' : $ar['name']); //Set the save file name
if($this->copyfile($ar)){
$this->returnArray[] = $this->returninfo;
}else{
$this->returninfo['error'] = $this->errmsg();
$this->returnArray[] = $this->returninfo;
}
}
return $this->errno ? false : true;
}else{//Upload a single file
$this->getExt($fileArr['name']);//Get the extension
$this->setSavename($changeName == 1 ? '' : $fileArr['name']);//Set the save file name
if($this->copyfile($fileArr)){
$this->returnArray[] = $this->returninfo;
}else{
$this->returninfo['error'] = $this->errmsg();
$this->returnArray[] = $this->returninfo;
}
return $this->errno ? false : true;
}
return false;
}else{
$this->errno = 10;
return false;
}
}

//Single file upload
// @param $fileArray file information array
function copyfile($fileArray){
$this->returninfo = array();
// Return Information
$this->returninfo['name'] = $fileArray['name'];
$this->returninfo['saveName'] = $this->saveName;
$ this->returninfo['size'] = number_format( ($fileArray['size'])/1024 , 0, '.', ' ');//In KB
$this->returninfo ['type'] = $fileArray['type'];
// Check file format
if (!$this->validateFormat()){
$this->errno = 11;
return false;
}
// Check whether the directory is writable
if(!@is_writable($this->savePath)){
$this->errno = 12;
return false;
}
// If overwriting is not allowed, check if the file already exists
//if($this->overwrite == 0 && @file_exists($this-> savePath.$fileArray['name'])){
// $this->errno = 13;
// return false;
//}
// If there is a size limit, Check if the file exceeds the limit
if ($this->maxSize != 0 ){
if ($fileArray["size"] > $this->maxSize){
$this-> ;errno = 14;
return false;
}
}
// File upload
if(!@move_uploaded_file($fileArray["tmp_name"], $this->savePath. $this->saveName)){
$this->errno = $fileArray["error"];
return false;
}elseif( $this->thumb ){// Create Thumbnail
$CreateFunction = "imagecreatefrom".($this->ext == 'jpg' ? 'jpeg' : $this->ext);
$SaveFunction = "image".($this ->ext == 'jpg' ? 'jpeg' : $this->ext);
if (strtolower($CreateFunction) == "imagecreatefromgif"
&& !function_exists("imagecreatefromgif")) {
$this->errno = 16;
return false;
} elseif (strtolower($CreateFunction) == "imagecreatefromjpeg"
&& !function_exists("imagecreatefromjpeg")) {
$this->errno = 17;
return false;
} elseif (!function_exists($CreateFunction)) {
$this->errno = 18;
return false;
}

$Original = @$CreateFunction($this->savePath.$this->saveName);
if (!$Original) {$this->errno = 19; return false ;}
$originalHeight = ImageSY($Original);
$originalWidth = ImageSX($Original);
$this->returninfo['originalHeight'] = $originalHeight;
$this- >returninfo['originalWidth'] = $originalWidth;
/*
if (($originalHeight < $this->thumbHeight
&& $originalWidth < $this->thumbWidth)) {
// If the thumbnail is smaller than expected, then Copy
move_uploaded_file($this->savePath.$this->saveName,
$this->savePath.$this-> thumbPrefix.$this->saveName);
} else {
if( $originalWidth > $this->thumbWidth ){// width > Set width
$thumbWidth = $this- >thumbWidth ;
$thumbHeight = $this->thumbWidth * ( $originalHeight / $originalWidth );
if($thumbHeight > $this->thumbHeight){// Height> Set height
$thumbWidth = $this->thumbHeight * ( $thumbWidth / $thumbHeight );
$thumbHeight = $this->thumbHeight ;
}
}elseif( $originalHeight > $this ->thumbHeight ){// High> Set height
$thumbHeight = $this->thumbHeight ;
$thumbWidth = $this->thumbHeight * ( $originalWidth / $originalHeight );
     if($thumbWidth > $this->thumbWidth){// 宽 > 设定宽度
      $thumbHeight = $this->thumbWidth * ( $thumbHeight / $thumbWidth );
      $thumbWidth = $this->thumbWidth ;
     }
    }
    */
    $radio=max(($originalWidth/$this->thumbWidth),($originalHeight/$this->thumbHeight));
    $thumbWidth=(int)$originalWidth/$radio;
    $thumbHeight=(int)$originalHeight/$radio;

    if ($thumbWidth == 0) $thumbWidth = 1;
    if ($thumbHeight == 0) $thumbHeight = 1;
    $createdThumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
    if ( !$createdThumb ) {$this->errno = 20; return false;}
    if ( !imagecopyresampled($createdThumb, $Original, 0, 0, 0, 0,
     $thumbWidth, $thumbHeight, $originalWidth, $originalHeight) )
     {$this->errno = 21; return false;}
    if ( !$SaveFunction($createdThumb,
     $this->savePath.$this->thumbPrefix.$this->saveName) )
     {$this->errno = 22; return false;}
   
  }
  // 删除临时文件
  /*
  if(!@$this->del($fileArray["tmp_name"])){
   return false;
  }
  */
  return true;
 }

// 文件格式检查,MIME检测
 function validateFormat(){
  if(!is_array($this->fileFormat)
   || in_array(strtolower($this->ext), $this->fileFormat)
   || in_array(strtolower($this->returninfo['type']), $this->fileFormat) )
   return true;
  else
   return false;
 }
// 获取文件扩展名
// @param $fileName 上传文件的原文件名
 function getExt($fileName){
  $ext = explode(".", $fileName);
  $ext = $ext[count($ext) - 1];
  $this->ext = strtolower($ext);
 }

// 设置上传文件的最大字节限制
// @param $maxSize 文件大小(bytes) 0:表示无限制
 function setMaxsize($maxSize){
  $this->maxSize = $maxSize;
 }
// 设置文件格式限定
// @param $fileFormat 文件格式数组
 function setFileformat($fileFormat){
  if(is_array($fileFormat)){$this->fileFormat = $fileFormat ;}
 }

// 设置覆盖模式
// @param overwrite 覆盖模式 1:允许覆盖 0:禁止覆盖
 function setOverwrite($overwrite){
  $this->overwrite = $overwrite;
 }


// 设置保存路径
// @param $savePath 文件保存路径:以 "/" 结尾,若没有 "/",则补上
 function setSavepath($savePath){
  $this->savePath = substr( str_replace("","/", $savePath) , -1) == "/"
  ? $savePath : $savePath."/";
 }

// 设置缩略图
// @param $thumb = 1 产生缩略图 $thumbWidth,$thumbHeight 是缩略图的宽和高
 function setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0){
  $this->thumb = $thumb;
  if($thumbWidth) $this->thumbWidth = $thumbWidth;
  if($thumbHeight) $this->thumbHeight = $thumbHeight;
 }

// 设置文件保存名
// @param $saveName 保存名,如果为空,则系统自动生成一个随机的文件名
 function setSavename($saveName){
  if ($saveName == ''){  // 如果未设置文件名,则生成一个随机文件名
   $name = date('YmdHis')."_".rand(100,999).'.'.$this->ext;
   //判断文件是否存在,不允许重复文件
   if(file_exists($this->savePath . $name)){
    $name = setSavename($saveName);
    }
  } else {
   $name = $saveName;
  }
  $this->saveName = $name;
 }

// 删除文件
// @param $fileName 所要删除的文件名
 function del($fileName){
  if(!@unlink($fileName)){
   $this->errno = 15;
   return false;
  }
  return true;
 }

// 返回上传文件的信息
 function getInfo(){
  return $this->returnArray;
 }

// 得到错误信息
 function errmsg(){
  $uploadClassError = array(
   0 =>'There is no error, the file uploaded with success. ',
   1 =>'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
   2 =>'The uploaded file exceeds the MAX_FILE_SIZE that was specified in the HTML form.',
   3 =>'The uploaded file was only partially uploaded. ',
   4 =>'No file was uploaded. ',
   6 =>'Missing a temporary folder. Introduced in PHP 4.3.10 and PHP 5.0.3. ',
   7 =>'Failed to write file to disk. Introduced in PHP 5.1.0. ',
   10 =>'Input name is not unavailable!',
   11 =>'The uploaded file is Unallowable!',
   12 =>'Directory unwritable!',
   13 =>'File exist already!',
   14 =>'File is too big!',
   15 =>'Delete file unsuccessfully!',
   16 =>'Your version of PHP does not appear to have GIF thumbnailing support.',
   17 =>'Your version of PHP does not appear to have JPEG thumbnailing support.',
   18 =>'Your version of PHP does not appear to have pictures thumbnailing support.',
   19 =>'An error occurred while attempting to copy the source image .
     Your version of php ('.phpversion().') may not have this image type support.',
   20 =>'An error occurred while attempting to create a new image.',
   21 =>'An error occurred while copying the source image to the thumbnail image.',
   22 =>'An error occurred while saving the thumbnail image to the filesystem.
     Are you sure that PHP has been configured with both read and write access on this folder?',
   );
  if ($this->errno == 0)
   return false;
  else
   return $uploadClassError[$this->errno];
 }
}
?>

 

下面看看是怎么调用 的.:

//如果收到表单传来的参数,则进行上传处理,否则显示表单
if(isset($_FILES['uploadinput'])){
 //建目录函数,其中参数$directoryName最后没有"/",
 //要是有的话,以'/'打散为数组的时候,最后将会出现一个空值
 function makeDirectory($directoryName) {
  $directoryName = str_replace("","/",$directoryName);
  $dirNames = explode('/', $directoryName);
  $total = count($dirNames) ;
  $temp = '';
  for($i=0; $i<$total; $i++) {
   $temp .= $dirNames[$i].'/';
   if (!is_dir($temp)) {
    $oldmask = umask(0);
    if (!mkdir($temp, 0777)) exit("不能建立目录 $temp");
    umask($oldmask);
   }
  }
  return true;
 }

if($_FILES['uploadinput']['name'] <> ""){
//Contains upload file class
require_once ('class.upload.php');
//Set the file upload directory
$savePath = "upload";
//Create the directory
makeDirectory($savePath);
//Allowed file types
$fileFormat = array( 'gif','jpg','jpge','png');
//File size limit, unit: Byte, 1KB = 1000 Byte
//0 means no limit, but subject to php.ini Impact of upload_max_filesize setting
$maxSize = 0;
//Will the original file be overwritten? 0 Not allowed 1 Allowed
$overwrite = 0;
//Initialize upload class
$f = new Upload($savePath, $fileFormat, $maxSize, $overwrite);
//If you want To generate a thumbnail, call the member function $f->setThumb();
//Parameter list: setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0)
//$thumb=1 means To generate a thumbnail, when not called, its value is 0
//$thumbWidth Thumbnail width, unit is pixel (px), if left blank, use the default value of 130
//$thumbHeight Thumbnail height, unit is the pixel (px), leave it blank and use the default value 130
$f->setThumb(1);

//The uploadinput in the parameter is the name of the input box for uploading files in the form
//The following 0 means not to change the file name. If it is 1, the system will generate a random file name
if (!$f->run('uploadinput',1)){
//Passed $f->errmsg() can only get the last error information,
//Detailed information can be obtained in $f->getInfo().
echo $f->errmsg()."
n";
}
//The upload result is saved in the array returnArray.
echo "

";<br> print_r($f->getInfo());<br> echo "
";
}
}else{
?>

Send this file:





< input name="uploadinput[]" type="file">



< ;/form>
}
//We upload an existing image file,
//A normal image file, and a file that is not allowed to be uploaded,
//The output result is as follows
/*
The uploaded file is Unallowable!

Array
(
[0] => Array
(
) [ name] => boy.jpg
                                                                 ​ => ; File exist already!
)

[1] => Array
(

[name] => girl.JPG

[saveName] => girl.JPG
[size] => 31
[type] => image/pjpeg
[originalHeight] => 450
[originalWidth] => 6 00
)

[2] => Array
(
[name] => test.wma
[saveName] => test.wma
[size] => 971
                                                                                                                                                                                                                                                     ;



http://www.bkjia.com/PHPjc/445081.html


www.bkjia.com

true

TechArticleLet’s take a look first, the example calling method: Rendering: Let’s take a look at the code. First upload the class??php /* TITLE : CLASS Upload FILE : class.upload.php DESCRIPTION : To provide upload utility, AUTHOR...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn