ホームページ >php教程 >php手册 >便利でシンプルなphpファイルアップロードクラス

便利でシンプルなphpファイルアップロードクラス

WBOY
WBOYオリジナル
2016-06-21 08:58:59992ブラウズ

以前一直用上面的这个文件上传类,发现有很多不方便的地方。

现在自己重新做了一个,大家帮我评评,是不是有什么不足之处。

/*
* ファイルアップロードクラス
* 著者: Duo Cainiao
* 連絡先メールアドレス: kingerq AT msn DOT com
* 作成時期: 2005-06 - 11
* 出典: http://blog.csdn.net/kingerq
*
* 例:
$f = new upfile( " ./soft/", "gif,jpg,png");
//同じファイル ドメイン名を持つ単一または複数のファイルをアップロードします
if(isset($_FILES["files"]){
if($f->upload("files")){
echo "ファイルが正常にアップロードされました。";
}
}
//ファイル ドメイン名が異なる複数のファイルをアップロードします
if(isset($_FILES){
foreach($_FILES as $key=>$val)
if($f->upload($key)){
echo "ファイルは正常にアップロードされました。 ";
}
}
?>
*/
class upfile{
//ファイル情報をアップロード
var $filename;
// 名前を保存
var $savename;
// 保存パス
var $savepath;
// ファイル形式は制限されていますが、空の場合は形式は制限されません
var $format = "" ;
// 上書きモード
var $overwrite = 0;
/* $overwrite = 0 は同じ名前のファイルを上書きしません
* $overwrite = 1 は同じ名前でファイルを上書きしますname
*/
//ファイルの最大文字数 Section
var $maxsize = 210000000;
//ファイル拡張子
var $ext;
//エラーコード
var $errno = 0;

/* 構築関数
* $path 保存パス
* $format ファイル形式 (カンマ区切り)
* $maxsize ファイルの最大制限
* $over オーバーライド パラメーター
*/
function upfile ($path, $format = "", $maxsize = 0, $over = 0){
$this->savepath = substr($path, -1) == "/" ? $path : $path ."/";//保存パス
$this->overwrite = $over;//同じ名前のファイルを上書きするかどうか
$this->maxsize = !$maxsize ? $this->maxsize : $maxsize;//ファイルの最大バイト数
$this->format = $format;
}

/*
* 機能: ファイルの検出と整理
* $フォーム ファイル フィールド名
* $file アップロード ファイル ストレージ名、空、または複数のファイルをアップロードするときにシステムによって自動的に生成されます
*/
function Upload($form, $file = ""){
if(!isset($_FILES[$form])){
$this->halt("指定されたファイル ドメイン名は存在しません。 ");
}else{
$filear = $_FILES[$form];
}

if(!is_writable($this->savepath)){
$ this->halt("指定されたパスは書き込み可能ではありません。");
}

if(is_array($filear["name"])){//同じファイルで複数のファイルをアップロードしますドメイン名
for($i = 0; $i < count($filear["name"]); $i++){
$ar["name"] = $filear["name"][ $i ];
$ar["tmp_name"] = $filear["tmp_name"][$i];
$ar["size"] = $filear["size"][$i];
$ar["error"] = $filear["error"][$i];

$this->getext($ar["name"]);//拡張子を取得
$this->set_savename();//保存ファイル名を設定します
$this->copyfile($ar);
}
}else{//単一のファイルをアップロードします
$this ->getext($filear["name"]);//拡張子を取得
$this->set_savename($file);//保存ファイル名を設定
$this- >copyfile($ filear);
}
return true;
}

/*
* 関数: アップロードされたファイルを検出してコピー
* $filear アップロード ファイル データarray
* /
function copyfile($filear){

if($filear["size"] > $this->maxsize){
$this->halt ("アップロード ファイル" .$filear["name"]." サイズがシステム制限 [".$this->maxsize." バイト] を超えているため、アップロードできません。");
}

if(!$ this->overwrite && file_exists($this->savename)){
$this->halt($this->savename." ファイル名は既に存在します。 ");
}

if($this->format != "" && !in_array(strto lower($this->ext),explode(",", strtolower($this- >format)))){
$this->halt($this->ext."このファイル形式ではアップロードが許可されていません。");
}

if(! copy( $filear["tmp_name"], $this->savepath.$this->savename)){
$errors = array(0=>"ファイルは正常にアップロードされました",
1=>"アップロードされたファイルは、php.ini の Upload_max_filesize オプションで指定された値を超えています。",
2=>"アップロードされたファイルのサイズは、HTML フォームの MAX_FILE_SIZE オプションで指定された値を超えています。 ",
3=>"ファイルの一部のみがアップロードされました。",
4=>"ファイルはアップロードされませんでした。");
$this->halt($errors[$ filear["error"]] );
}else{
@unlink($filear["tmp_name"]);//一時ファイルを削除
}
}

/ *
* 関数: ファイル拡張子を取得します
* $filename はファイル名です
*/
function getext($filename){
if($filename == "") return;

$ext =explode(".", $filename);

$this->gt;ext = $ext[1];
}

/*
* 関数: ファイルの保存名を設定します
* $savename 保存名、空の場合、システムはランダムなファイル名を自動的に生成します
*/
function set_savename($savename = "")
{
if ( $ savename == "") // ファイル名が設定されていない場合は、ランダムなファイル名を生成します
{
SRAND (Double) microtime () * 1000000); 🎜> $ RND = RAND (100,999) ;
$name = date('U') savename;
}
$this->savename = $name;
}

/*
* 関数: エラー プロンプト
* $msg は出力情報です
*/
function halt($msg){
echo "注: exit;
}
}
?>




声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。