PHP5+UTF8 multiple file upload class_PHP tutorial

WBOY
Release: 2016-07-21 15:48:48
Original
908 people have browsed it

There are still some functions that have not been added, such as automatic name change, image processing, etc. You can add them as needed.
USE:
$up = new upfile(ROOT_PATH.'data/'.date("Ym" ,time()),array('gif','jpg','jpeg'),true);
$fileimg = $up->upload($_FILES['img']);//Return to upload After the file name array, $_FILES['img'] is the uploaded file
You can use $up->log to view the upload information.
//====== ==============================================
/ / FileName: upfile.class.php
// Summary: File upload class
// Author: millken (Lost Lincoln)
// LastModifed: 2008-6-4
// copyright (c )2008 millken@gmail.com
//======================================== ==============
if(!defined('OK'))exit(__FILE__.'Access Denied');
class upfile {
public $ExtensionFileFormat = array();
public $returninfo = array();
private $ImageFileFormat = array('gif','bmp','jpg','jpe','jpeg','png');
private $OtherFileFormat = array('zip','pdf','rar','xls','doc','ppt','csv');
private $savePath;
private $attachment_path = './upfiles/';
private $overwrite = false; # Whether to overwrite the same name
private $maxSize = 0; # The maximum size of the file, if it is 0, there is no size limit
private $ext;
private $errno = 0;
/* Constructor
* (string)$savePath file saving path, the default is $attachment_path
* (array)$extensionFileFormat Customize the extension of the uploaded file, When not set, it is $ImageFileFormat || $OtherFileFormat
* (bool)$overwrite Whether to overwrite the file with the same name
*/
public function __construct($savePath='',$extensionFileFormat = array(),$overwrite = false) {
$this->savePath = empty($savePath)?$this->attachment_pathsavePath.'/';
$this->extensionFileFormat = is_array($extensionFileFormat)?$extensionFileFormat: array();
$this->overwrite = is_bool($overwrite)?$overwrite:false;
}
/*Upload function
* (array)$files Array of files to be uploaded $_FILES['attach']
* (number)$maxSize The maximum number of bytes of the file, the default is 0, no limit on upload size
*/
public function upload($files,$maxSize=0) {
$this->maxSize = is_numeric($maxSize)?$maxSize:0;
if(isset($files) && is_array($files)) {
if(is_array($files[ 'name'])) {
foreach($files as $key => $var) {
foreach($var as $id => $val) {
$attachments[$id] [$key] = $val;
}
}
} else {
$attachments[] = $files;
}
}
self::check_file_type($ attachments);
if(empty($this->filelist)) {
$this->log .= "The list of files to be uploaded is empty. n";
return array();
}
if(!self::makeDirectory() || !@is_writable($this->savePath)) {
$this-> log .= $this->savePath . "Cannot create or its permission is not writable. n";
return array();
}
$filearray = array();
foreach($this->filelist as $k=>$f) {
if ($this->maxSize && $f['size']>$this->maxSize) {
$this->log .= $f['name'] . "The size exceeds the set value Defined value: " . $this->maxSize ."n";
}elseif($this->overwrite == false && file_exists($this->savePath . $f['name']) ) {
$this->log .= $f['name'] . "Already exists in the directory:" . $this->savePath . "n";
}else{
@ unlink($this->savePath . $f['name']);
if(@move_uploaded_file($f['tmp_name'],$this->savePath . mb_convert_encoding($f['name'] ,'gbk','utf-8'))) {//Without encoding conversion, Chinese will not be supported
$this->log .= $f['name'] . "Successfully uploaded to directory : ".$this->savePath ."n";
$filearray[$k] = $this->savePath . $f['name'];
}else{
$this ->log .= $f['name'] . "Upload failed. n";
}
}
}
return $filearray;
}
/*Detect file type
*(array)$files file array
* /
private function check_file_type($files) {
$this->filelist = array();
foreach($files as $key=>$file) {
if($file ['error'] == 0) {
$ext = strtolower(substr($file['name'], strrpos($file['name'], '.') + 1));
$str = @file_get_contents($file['tmp_name'],FALSE,NULL,0,20);
if((in_array($ext,array('jpg','jpeg')) && substr($str ,0, 3) !== "xFFxD8xFF") || ($ext == 'gif' && substr($str ,0, 4) !== 'GIF8') || ($ext == 'png' && substr($str ,0, 8) !== "x89x50x4Ex47x0Dx0Ax1Ax0A") || ($ext == 'bmp' && substr($str ,0, 2) !== 'BM') || ($ext == 'swf' && (substr($str ,0, 3) !== 'CWS' || substr($str ,0, 3) !== 'FWS')) || ($ext == 'zip' && substr($str ,0, 4) !== "PKx03x04") || ($ext == 'rar' && substr($str ,0, 4) !== 'Rar!') || ($ext = = 'pdf' && substr($str ,0, 4) !== "x25PDF") || ($ext == 'chm' && substr($str ,0, 4) !== 'ITSF') || ($ext == 'rm' && substr($str ,0, 4) !== "x2ERMF") || ($ext == 'exe' && substr($str ,0, 2) !== "MZ ") || (in_array($ext,array('doc','xls','ppt')) && substr($str ,0, 4) !== "xD0xCFx11xE0")) {
$this- >log .= $file['name'] . "The file type does not match the file content.n";
}elseif((!empty($this->extensionFileFormat) && in_array($ext,$this->extensionFileFormat)) || (empty($this->extensionFileFormat) && (in_array($ext,$this->ImageFileFormat) || in_array($ext,$this->OtherFileFormat)))) {
$this->filelist[$key] = $file;
}else{
$this->log .= $file['name'] . "不符合上传文件的类型。n";
@unlink($file['tmp_name']);
}
}
}
}
/*生成上传目录
*
*/
private function makeDirectory() {
$directoryName = str_replace("\","/", $this->savePath);
$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)) return false;
@umask($oldmask);
}
};
if(is_dir($this->savePath)) {
return true;
} else {
return false;
};
}
}
?>

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/319657.htmlTechArticle还有些功能没有加上去,如自动更名,图片处理等.可根据需要自己添加. USE: $up = new upfile(ROOT_PATH.'data/'.date("Ym",time()),array('gif','jpg','jpeg'),true...
source:php.cn
Statement of this Website
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
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!