ホームページ  >  記事  >  バックエンド開発  >  複数の画像アップロード クラスの PHP 実装の例_PHP チュートリアル

複数の画像アップロード クラスの PHP 実装の例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:21:56746ブラウズ

複数の画像アップロードクラスのPHP実装の例

この記事では主に、このタイプのファイルアノテーションの詳細な機能は実用的であり、必要な友人はそれを参照できます

この記事では、gif、jpg、jpeg、pjpeg、png 形式の複数の画像アップロード機能をサポートする実用的な PHP マルチ画像ファイル アップロード クラスについて説明します。このクラスでは、画像の種類を制限したり、画像のサイズをアップロードしたり、アップロード ディレクトリを設定したりすることもできます。一部の投稿判定やその他の機能。さらに、このクラスは画像のアップロードに限定されません。興味のある読者はコードを変更するだけで、TXT/RAR などのファイル タイプをアップロードすることもできます。

PHPマルチ画像アップロードクラスの完全な関数コードは以下の通りです:

クラスmore_file_upload{

const FILE_PATH = '/uploadfile/' //デフォルトのファイルアップロードディレクトリは自分で変更してください

;

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;

静的合計サイズ = 0;

function __construct(file_name, file_error, file_size, file_tmp_name, file_type){

これ ->handdate = date('m-d-Y');

if (!empty(file_name)){

これ -> ファイル名 = ファイル名;

これ -> file_error = file_error;

これ -> file_size = file_size;

これ -> file_tmp_name = file_tmp_name;

これ -> file_type = file_type;

これ -> file_type_array = array('/', 'image/gif', 'image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png');

これ -> file_type_real_array = array(0.1, 'jpg' => 74707370, 'gif' => 7173, 'bmp' => 6677, 'png' => 807871);

これ -> show_execute_message(これ -> file_error、this -> file_name、this -> file_type、th​​is -> file_size);

}

}

関数__destruct(){

これ -> file_name = NULL;

;

これ -> file_error = NULL;

;

これ -> file_size = NULL;

;

これ -> file_tmp_name = NULL;

これ -> file_type = NULL;

;

self :: totalsize = 0;

}

関数 show_execute_message(smfileerror, smfilename, smfiletype, smfilesize){

if(smfileerror > 0){

スイッチ (smfileerror){

ケース 1: smfilemessage = '

ファイルがサーバーの合意されたサイズを超えています!';

休憩;

ケース2: smfilemessage = '

ファイルが指定されたファイルサイズを超えています!';

休憩;

ケース 3: smfilemessage = '

ファイルの一部のみがアップロードされました!';

休憩;

ケース 4: echo "this->file_name " 'ファイルのアップロードに失敗しました!

';

休憩;

}

self :: __destruct();

}その他{

smfiletypeflag = array_search(smfiletype, this -> file_type_array);

// 実際のフォーマット検証を実行します

if(smfiletypeflag != false){

file = fopen(this ->gt; file_tmp_name, "rb");

bin = fread(file, 10);

fclose(ファイル);

strInfo = @unpack("c10chars", bin);

TypeCode = intval(strInfo['chars1'] . strInfo['chars2']);

smfiletypeflag = array_search(typeCode, this -> file_type_real_array);

if(smfiletypeflag == false){ // png画像かどうかを判定します

TypeCode = intval(strInfo['chars2'] . strInfo['chars3'] . strInfo['chars4']);

smfiletypeflag = array_search(typeCode, this -> file_type_real_array);

if(smfiletypeflag == false){ // jpg画像かどうかを判定します

$typeCode = intval(strInfo['chars7'] . strInfo['chars8'] . strInfo['chars9'] . strInfo['chars10']);

smfiletypeflag = array_search(typeCode, this -> file_type_real_array);

}

}

}

if($smfiletypeflag == false){

$smfilemessage = '

ファイルの種類が間違っています。確認してください!';

self :: __destruct();

}その他{

$resflag = $this ->move_file($this ->file_tmp_name, this ->file_name);

if (resflag == 1){

$smfilemessage = 'ファイルは正常にアップロードされました!';

self :: totalsize += intval($smfilesize);

self :: __destruct();

}その他{

$smfilemessage = '

ファイルのアップロードに失敗しました!';

self :: __destruct();

}

}

}

$smfilesizeformat = $this ->size_BKM(smfilesize);

エコー

「 .smファイル名 . 」

』 。 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 。 "mvファイル名";

結果 = move_uploaded_file(mvfiletmp, Uploadfile);

結果を返す;

}

}

関数 rand_string(){

string = md5(uniqid(rand() . microtime()));

文字列を返す;

}

function size_BKM(size){ // B/KB/MB单位转换

if(サイズ

{

size_BKM = (文字列)size 。 「B」;

}

elseif(size < (1024 * 1024))

{

size_BKM =number_format((double)(size / 1024), 1) 。 「KB」;

}その他

{

size_BKM =number_format((double)(size / (1024 * 1024)), 1) 。 「MB」;

}

size_BKMを返す;

}

}

?>

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/852816.html技術記事 PHP 複数の画像上の転送クラス例、この篇文章主媒介PHP の複数の画像上の転送クラスの例、この種類の文書の注釈機能機能を備えており、一定の拡張性を備えており、必要な友人が参加できます...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。