澳门威利斯人_威利斯人娱乐「手机版」

来自 办公软件 2019-09-28 22:16 的文章
当前位置: 澳门威利斯人 > 办公软件 > 正文

PHP一步步实现文件上传及上传文件类,PHP手写的

完整php 文件上传类

三个新手写的 PHP 图片上传类,基本的效能已经知足,可以回到顾客端文件名,文件大小,不经常文件夹路线,允许上传的文件类型,文件后缀,新路线,新文件名,图片宽度,图片中度,自定义上传成功信息,呈现上传的状态。。是不是上传成功的新闻等等,外加构造函数,对于生手学习来讲,已经丰富了,值得切磋学习。。

一,相比轻巧的兑现文本上传

class UploadFile {
 /**
  * 允许的上传文件类型
  * @var array $allowFileTypes
  * @access private
  */
 private $allowFileTypes = array('jpeg','jpg','gif','bmp','png');

在应用时,和任何PHP类一样,先要进行最先化对象,在前台调用函数方法就能够,这里不再详细表明,这么些类的钻研价值重要在于代码的规范与实用,并从未大气繁琐的代码,都以部分简练的上传函数整合成的三个PHP图片上传类,上面是事无巨细的类代码:

文件上传原理

 /**
  * 允许的上传文件大小,单位字节
  * @var int $maxFileSize
  * @access public
  */
 public $maxFileSize = 8388608;

 代码如下

文本上传原理:将顾客端的文书先上传到服务器端,然后再将劳动器端的有时文件移动到钦定的目录。

 /**
  * 构造函数
  */
 public function __construct() {

class upload {
private $file_name = ‘null’; #顾客端文件名
private $file_size = 0; #文件大小
private $file_tmpName = ”; #一时文件夹路线
private $upload_type = array(‘jpg’,'jpeg’,'gif’,'png’); #同意上传的文件类型
private $upload_Ext = ‘null’; #文件后缀
private $upload_dir = ‘null’; #新路径
private $upload_name = ‘null’; #新文件名
private $upload_width = 0; #图片宽度
private $upload_height = 0; #图形中度
private $upload_msg = ”; #上传新闻
private $upload_mode; #上传状态
/**
* 构造函数,自动上传
* @access public
* @param string $control 文件域控件名
* @param string $filePath 保存路线
* @param string $fileName 新文件名,不带后缀
* @param array $fileType 允许上传的文书后缀
* @param int $size 允许上传的文件大小,以字节为单位
*/
public function __construct($control=”,$filePath=”,$fileName=”,$fileType=”,$size=0) {
$this->upload_mode = true;
if($control==”)
$this->error(‘上传的文件域控件名无法为空’);
else{
$this->file_name=$_FILES[$control]['name'];
$this->file_size=$_FILES[$control]['size'];
$this->file_tmpName=$_FILES[$control]['tmp_name'];
if($fileType!=”)
$this->upload_type = $fileType;
if($filePath==”)
$this->upload_dir=’./’;
else
$this->upload_dir=$filePath;
if(!is_uploaded_file($this->file_tmpName))
$this->error(‘未有公文被上传’);
else{
if($size!=0&&$this->file_size>$size)
$this->error(‘上传的图形文件不能超越’.$this->getSize($size));
if(!$this->typeDetect($this->file_name))
$this->error(‘不援助上传此类型的文书’);
else{
if(!$this->fileDetect($this->file_tmpName))
$this->error(‘上传的图纸文件无效或曾经毁损’);
}
if($fileName==”)
$this->upload_name=$this->file_name;
else
$this->upload_name=$fileName.’.’.$this->upload_Ext;
}
}
//起始保存文件
if($this->mode)
$this->saveFile();
}
/**
* 获取属性
* @access public
* @param string 属性名
* @return 属性值
*/
public function __get($name){
switch($name){
case ‘path’:
return $this->upload_dir;
break;
case ‘name’:
return $this->upload_name;
break;
case ‘ext’:
return $this->upload_Ext;
break;
case ‘size’:
return $this->getSize($this->file_size);
case ‘width’:
return $this->upload_width;
break;
case ‘height’:
return $this->upload_height;
break;
case ‘mode’:
return $this->upload_mode;
break;
case ‘msg’:
return $this->upload_msg;
break;
}
}
/**
* 检验文件后缀名
* @access public
* @return bool
*/
private function typeDetect($OldFile){
$tempArr = explode(“.”, $OldFile);
$fileExt = array_pop($tempArr);
$fileExt = trim($fileExt);
$fileExt = strtolower($fileExt);
if(in_array($fileExt,$this->upload_type)){
$this->upload_Ext=$fileExt;
return true;
}
else
return false;
}
/**
* 检查评定上传文件是或不是是有效图片格式
* @access private
* @return bool
*/
private function fileDetect($tmpName){
$arr = getimagesize($tmpName);
if(!$arr){
return false;
}else{
$this->upload_width = $arr[0];
$this->upload_height = $arr[1];
return true;
}
}
/**
* 保存文件
* @access private
*/
private function saveFile(){
if(!is_dir($this->upload_dir)){
mkdir($this->upload_dir, 0777);
chmod($this->upload_dir, 0777);
}
$save_file = move_uploaded_file($this->file_tmpName,$this->upload_dir.$this->upload_name);
if(!$save_file)
$this->error(‘文件写入败北’);
else
$this->upload_msg=’文本上传成功’;
}
/**
* 获取文件大小
* @return string 返回B,KB,MB单位
*/
private function getSize($tmpSize){
$value = ‘B’;
if($tmpSize>1024){
$tmpSize = floor($tmpSize/1024);
$value = ‘KB’;
}
if($tmpSize>1024){
$tmpSize = round($tmpSize/1024,2);
$value = ‘MB’;
}
return $tmpSize.$value;
}
/**
* 错误提醒
* @access private
* @param string $msg 错误新闻
*/
private function error($msg=”){
$this->upload_msg .= $msg;
$this->upload_mode = false;
}
}

客商端配置

 }

要上传文件,大家须求运用表单,并且表单发送的款型来POST央浼,况兼须要将enctype设置为multipart/form-data,总计上传的条件如下:

 /**
  * 设置允许的文件类型
  * @param mixed $fileTypes 文件类型列表能够是数组和字符串,用“,”号隔离
  * @return void
  * @access public
  */
 public function setAllowFileType($fileTypes) {
  if (!is_array($fileTypes)) {
   $this->allowFileTypes = explode(',', $fileTypes);
  } else {
   $this->allowFileTypes = $fileTypes;
  }
  return;
 }

浏览器表单页面

 /**
  * 上传文件
  * @param string $fileField  要上传的公文如$_FILES['file']
  * @param string $destFolder 上传的目录,会自动建立
  * @param string $fileTypes   上传后文件命名格局0使用原来的书文件名1使用当前光阴戳作为文件名
  * @return int
  * @access public
  */
 public function upload($fileField, $destFolder = './', $fileNameType = 1) {

表单发送方式为post
指定enctype=multipart/form-data
顾客端的代码:

  switch ($fileField['error']) {
   case UPLOAD_ERR_OK : //其值为 0,没错误发生,文件上传成功。
   $upload_succeed = true;
   break;
   case UPLOAD_ERR_INI_SIZE : //其值为 1,上传的公文超越了 php.ini 中 upload_max_filesize 选项限制的值。
   case UPLOAD_ERR_FORM_SIZE : //其值为 2,上传文件的尺寸超越了 HTML 表单中 MAX_FILE_SIZE 选项内定的值。
   $errorMsg = '文件上传战败!失败原因:文件大小赶上限制!';
   $errorCode = -103;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_PARTIAL : //值:3; 文件独有一部分被上传。
   $errorMsg = '文件上传失利!失败原因:文件唯有部分被上传!';
   $errorCode = -101;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_NO_FILE : //值:4; 未有公文被上传。
   $errorMsg = '文件上传失利!失败原因:未有公文被上传!';
   $errorCode = -102;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_NO_TMP_DI景逸SUV : //其值为 6,找不到不经常文件夹。PHP 4.3.10 和 PHP 5.0.3 引进。
   $errorMsg = '文件上传失利!败因:找不到一时文件夹!';
   $errorCode = -102;
   $upload_succeed = false;
   break;
   case UPLOAD_ERR_CANT_WOdysseyITE : //其值为 7,文件写入失利。PHP 5.1.0 引入。
   $errorMsg = '文件上传退步!失败原因:文件写入失利!';
   $errorCode = -102;
   $upload_succeed = false;
   break;
   default : //别的错误
   $errorMsg = '文件上传失败!失败原因:别的!';
   $errorCode = -100;
   $upload_succeed = false;
   break;
  }
  if ($upload_succeed) {
   if ($fileField['size']>$this->maxFileSize) {
    $errorMsg = '文件上传退步!失败原因:文件大小超过限制!';
    $errorCode = -103;
    $upload_succeed = false;
   }
   if ($upload_succeed) {
    $fileExt = FileSystem::fileExt($fileField['name']);
    if (!in_array(strtolower($fileExt),$this->allowFileTypes)) {
     $errorMsg = '文件上传失败!失败原因:文件类型不被允许!';
     $errorCode = -104;
     $upload_succeed = false;
    }
   }
  }
  if ($upload_succeed) {
   if (!is_dir($destFolder) && $destFolder!='./' && $destFolder!='../') {
    $dirname = '';
    $folders = explode('/',$destFolder);
    foreach ($folders as $folder) {
     $dirname .= $folder . '/';
     if ($folder!='' && $folder!='.' && $folder!='..' && !is_dir($dirname)) {
      mkdir($dirname);
     }
    }
    chmod($destFolder,0777);
   }
   switch ($fileNameType) {
    case 1:
     $fileName = date('YmdHis');
     $dot = '.';
     $fileFullName = $fileName . $dot . $fileExt;
     $i = 0;
     //决断是或不是有重名文件
     while (is_file($destFolder . $fileFullName)) {
      $fileFullName = $fileName . $i . $dot . $fileExt;
     }
     break;
    case 2:
     $fileFullName = date('YmdHis');
     $i = 0;
     //剖断是不是有重名文件
     while (is_file($destFolder . $fileFullName)) {
      $fileFullName = $fileFullName . $i ;
     }
     break;
    default:
     $fileFullName = $fileField['name'];
     break;
   }
   //die($destFolder . $fileFullName);
   $tempfile = str_replace('\','',$fileField['tmp_name']);
   //$files =
   if (move_uploaded_file($tempfile, $destFolder . $fileFullName)) {
    return $fileFullName;
   } else {
    $errorMsg = $destFolder.$fileFullName." 文件上传战败!失败原因:当和姑件系统读写权限出错!";
    $errorCode = -105;
    $upload_succeed = false;
   }
  }
  if (!$upload_succeed) {
   throw new Exception($errorMsg,$errorCode);
  }

<form action="uploadFile.php" method="post" accept-charset="utf-8" enctype="multipart/form-data">
    请选拔要上传的文书:
    <input type="file" name="myfile">
    <input type="submit" value="上传文件">
</form>
 
$_FILES文件变量

 }

下边是上传二个图片然后打字与印刷整理出来的数目:

 
// name => 'QC8054R7QPGQ_1000x500.jpg'
// type => 'image/jpeg'
// tmp_name => '/Applications/MAMP/tmp/php/php1X5KZU'
// error => 0
// size => 229936
 
$_FILES上传的参数含义表明:

本文由澳门威利斯人发布于办公软件,转载请注明出处:PHP一步步实现文件上传及上传文件类,PHP手写的

关键词: 澳门威利斯人