This article mainly introduces PHP implementation of multiple image upload class examples. The detailed functions of this type of file annotation are practical and have certain scalability. Friends in need can refer to it
This article describes a practical PHP multi-image file upload class, which supports multiple image upload functions in gif, jpg, jpeg, pjpeg, and png formats. The class can also limit image types, upload image size, and set upload Directory, some submission judgment and other functions. In addition, this class is not limited to uploading images. It can also upload file types such as TXT/RAR. It just needs to be modified. Interested readers can try it themselves.
The complete function code of PHP multi-image upload class is as follows:
class more_file_upload{
const FILE_PATH = '/uploadfile/'; //Default file upload directory, please modify it yourself
var file_type;
var file_type_array;
var file_type_real_array;
var file_type_string;
var file_name;
var file_size;
var file_tmp_name;
var file_error;
var handledate;
static totalsize = 0;
Function __construct(file_name, file_error, file_size, file_tmp_name, file_type){
this -> handledate = date('m-d-Y');
if (!empty(file_name)){
this -> file_name = file_name;
this -> file_error = file_error;
this -> file_size = file_size;
this -> file_tmp_name = file_tmp_name;
this -> file_type = file_type;
this -> file_type_array = array('/', 'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png');
this -> file_type_real_array = array(0.1, 'jpg' => 74707370, 'gif' => 7173, 'bmp' => 6677, 'png' => 807871);
this -> show_execute_message(this -> file_error, this -> file_name, this -> file_type, this -> file_size);
}
}
Function __destruct(){
this -> file_name = NULL;
this -> file_error = NULL;
this -> file_size = NULL;
this -> file_tmp_name = NULL;
this -> file_type = NULL;
Self :: totalsize = 0;
}
Function show_execute_message(smfileerror, smfilename, smfiletype, smfilesize){
if(smfileerror > 0){
switch (smfileerror){
case 1: smfilemessage = 'The file exceeds the agreed size of the server!';
break;
case 2: smfilemessage = 'The file exceeds the specified file size!';
break;
Case 3: smfilemessage = 'Only part of the file was uploaded!';
break;
Case 4: echo "this->file_name " . 'File upload failed!
';
break;
}
Self :: __destruct();
}else{
smfiletypeflag = array_search(smfiletype, this -> file_type_array);
// Perform real format verification
if(smfiletypeflag != false){
file = fopen(this -> file_tmp_name, "rb");
bin = fread(file, 10);
fclose(file);
strInfo = @unpack("c10chars", bin);
typeCode = intval(strInfo['chars1'] . strInfo['chars2']);
smfiletypeflag = array_search(typeCode, this -> file_type_real_array);
if(smfiletypeflag == false){ // Determine whether it is a png picture
typeCode = intval(strInfo['chars2'] . strInfo['chars3'] . strInfo['chars4']);
smfiletypeflag = array_search(typeCode, this -> file_type_real_array);
if(smfiletypeflag == false){ // Determine whether it is a jpg image
$typeCode = intval(strInfo['chars7'] . strInfo['chars8'] . strInfo['chars9'] . strInfo['chars10']);
smfiletypeflag = array_search(typeCode, this -> file_type_real_array);
}
}
}
if($smfiletypeflag == false){
$smfilemessage = 'The file type is incorrect, please verify!';
Self :: __destruct();
}else{
$resflag = $this -> move_file($this -> file_tmp_name, this -> file_name);
if (resflag == 1){
$smfilemessage = 'File uploaded successfully!';
self :: totalsize += intval($smfilesize);
Self :: __destruct();
}else{
$smfilemessage = 'File upload failed!';
Self :: __destruct();
}
}
}
$smfilesizeformat = $this -> size_BKM(smfilesize);
echo '
. smfilename . '
' . smfiletype . '
' . smfilesizeformat . '
' . smfilemessage . '
';
}
function move_file(mvfiletmp, mvfilename){ // 移动文件
mvfilenamearr = explode('.', basename(mvfilename));
mvfilenamearr[0] = this -> rand_string();
mvfilename = implode('.', mvfilenamearr);
if (is_uploaded_file(mvfiletmp)){
uploadfile = self :: FILE_PATH . "mvfilename";
result = move_uploaded_file(mvfiletmp, uploadfile);
return result;
}
}
function rand_string(){
string = md5(uniqid(rand() . microtime()));
return string;
}
function size_BKM(size){ // B/KB/MB单位转换
if(size < 1024)
{
size_BKM = (string)size . " B";
}
elseif(size < (1024 * 1024))
{
size_BKM = number_format((double)(size / 1024), 1) . " KB";
}else
{
size_BKM = number_format((double)(size / (1024 * 1024)), 1) . " MB";
}
return size_BKM;
}
}
?>