以下は、メソッド upfile($path = "./", $format = "", $maxsize = 0, $over = 0) を呼び出すファイルと画像のアップロード クラスです: コンストラクター パラメーター (保存パス、アップロード形式、アップロードの最大バイト数、同じ名前のファイルをカバーするかどうか)、複数のファイルをアップロードする場合は、foreach($_FILES as $key=>$val) してから $filear[] = $f->upload( $key);//アップロード後に戻る ファイル名の配列。
以下は、メソッド upfile($path = "./", $format = "", $maxsize = 0, $over = 0) を呼び出すファイルと画像のアップロード クラスです。 : コンストラクター パラメーター (保存パス、アップロード形式、アップロードの最大バイト数、同じ名前のファイルをカバーするかどうか)、複数のファイルをアップロードする場合は、foreach($_files as $key=>$val) してから $filear[] = $f-> Upload($key);//return アップロード後のファイル名の配列。
*/
クラスアップファイル{
//アップロードファイル情報
var $ファイル名;
// 名前を保存します
var $savename;
// パスを保存します
var $savepath;
// ファイル形式制限あり、空の場合は形式制限なし
var $format = "";
// オーバーレイモード
var $overwrite = 0;
/* $overwrite = 0の場合、同名のファイルは上書きされません
※ $overwrite = 1の場合、同名のファイルを上書きします
*/
//ファイルの最大バイト数
var $maxsize = 210000000;
//ファイル拡張子
var $ext;
/* コンストラクター
* $path 保存パス
* $format ファイル形式 (カンマ区切り)
* $maxsize ファイルの最大制限、0 がデフォルト値です
* $over オーバーライドパラメータ
*/
function upfile($path = "./", $format = "", $maxsize = 0, $over = 0){
if(!file_exists($path)){
$this->halt("指定されたディレクトリ [ ".$path." ] は存在しません。");
}
if(!is_writable($path)){
$this->halt("指定されたディレクトリ [ ".$path." ] は書き込み可能ではありません。");
}
$path = str_replace("","/", $path);
$this->savepath = substr($path, -1) == "/" ? $path : $path."/";//パスを保存します
$this->overwrite = $over;//同名のファイルを上書きするかどうか
$this->maxsize = !$maxsize ? $this->maxsize : $maxsize;//ファイルの最大バイト数
$this->format = $format;
}
/*
* 機能: ファイルを検出して整理します
* $form ファイルフィールド名
* $filename は、アップロードされたファイルを保存するための名前です。空の場合、または複数のファイルをアップロードするときにシステムによって名前が自動的に生成されます。 * $filename = 1 の場合、同じファイル ドメイン名を持つ複数のファイルがアップロードされた場合、ファイルはアップロードされた元のファイル名で保存されます。
*/
関数アップロード($form, $filename = ""){
if(!isset($_files[$form])){
$this->halt("指定されたファイルドメイン名は存在しません。");
}その他{
$filear = $_files[$form];
}
if(is_array($filear["name"])){//同じファイルドメイン名を持つ複数のファイルをアップロードします
$outfile = array();//ファイル名配列を返します
for($i = 0; $i$ar["名前"] = $filear["名前"][$i];
$ar["tmp_name"] = $filear["tmp_name"][$i];
$ar["サイズ"] = $filear["サイズ"][$i];
$ar["error"] = $filear["error"][$i];
$this->getext($ar["name"]);//拡張機能を取得します
$this->set_savename($filename == 1 ? $ar["name"] : "");//保存ファイル名を設定します
$outfile[] = $this->copyfile($ar);
}
$outfile を返します;
}else{//単一のファイルをアップロードします
$this->getext($filear["name"]);//拡張子を取得します
$this->set_savename($filename);//保存ファイル名を設定します
$this->copyfile($filear);
を返します }
false を返します;
}
/*
* 機能: アップロードされたファイルを検出してコピーします
* $filear ファイルデータ配列をアップロードします
*/
関数 copyfile($filear){
if($filear["size"] > $this->maxsize){
$this->halt("アップロードされたファイル ".$filear["name"]." のサイズがシステム制限 [".$this->maxsize." バイト] を超えているため、アップロードできません。");
}
if(!$this->上書き && file_exists($this->保存名)){
$this->halt($this->savename."ファイル名はすでに存在します。");
}
if(!$this->chkext()){
$this->halt($this->ext."このファイル形式ではアップロードが許可されていません。");
}
if(!copy($filear["tmp_name"], $this->savepath.$this->savename)){
$errors = array(0=>"ファイルは正常にアップロードされました",
1=>「アップロードされたファイルは、phptutorial.iniのupload_max_filesizeオプションで制限されている値を超えています。」,
2=>「アップロードされたファイルのサイズが、HTMLフォームのmax_file_sizeオプションで指定した値を超えています。」,
3=>「ファイルの一部のみがアップロードされました。」,
4=>「ファイルはアップロードされませんでした。」);
$this->halt($errors[$filear["error"]]);
}その他{
@unlink($filear["tmp_name"]);//一時ファイルを削除
Return $this->savename;//アップロードされたファイル名を返します
}
}
/*
* 機能: ファイル拡張子を取得します
* $filename はファイル名です
*/
関数 gettext($filename){
if($filename == "") return;
$ext =explode(".", $filename);
$this->ext = $ext[count($ext)-1];
}
/*
* 機能: ファイルタイプが許可されているかどうかを確認します
*/
関数 chkext(){
if($this->format == "" || in_array(strto lower($this->ext),explode(",", strto lower($this->format)))) return true;
それ以外の場合は false を返します;
}
/*
* 機能: ファイルの保存名を設定します
* $savename は保存名です。空の場合、システムはランダムなファイル名を自動的に生成します
*/
function set_savename($savename = ""){
if ($savename == "") { // ファイル名が設定されていない場合は、ランダムなファイル名を生成します
srand ((double) microtime() * 1000000);
$rnd = ランド(100,999);
$name = date('u') + $rnd;
$name = $name.".".$this->ext;
} その他 {
$name = $savename;
}
$this->savename = $name;
}
/*
* 機能: エラープロンプト
※$msgは出力情報です
*/
関数停止($msg){
echo "注: ".$msg;
終了します;
}
/*
*
*主にアップロードしたファイルを返さずに削除するために使用します
*パラメータ $file: ファイルパス
*/関数 delete_file($file)
{
(file_exists($file)) の場合
{
$delete = chmod ($file, 0777); $delete = unlink($file); if(file_exists($file))
$filesys = eregi_replace("/","",$file); $delete = system("del $filesys"); clearstatcache(); if(file_exists($file))
$delete = chmod ($file, 0777); $delete = unlink($file); $delete = system("del $filesys"); }
clearstatcache(); }
}
}
/*
使い方
* ファイルアップロードクラス
upfile($path = "./", $format = "", $maxsize = 0, $over = 0) : コンストラクターパラメータ (保存パス、アップロード形式、アップロード最大バイト数、ファイルを同じファイルで上書きするかどうか)名前)
* 例: