使用例: upload.php include_once "upload.class.php"; if ($Submit != '') { $fileArr[ 'file'] = $file; $fileArr['name'] = $file_name; $fileArr['size'] = $file_size; $fileArr['type'] = $file_type; /**アップロードできるファイルの種類*/ $filetypes = array('gif','jpg','jpge','png'); /**ファイルアップロードディレクトリ*/ $savepath = "/usr/htdocs/upload/"; /**上限なし 0 上限なし*/ $maxsize = 0; /**上書き 0 は許可されません 1 は許可されます*/ $overwrite = 0 ; $upload = new Upload($fileArr, $file_name, $savepath, $filetypes, $overwrite, $maxsize); if (!$upload->run()) { echo "上传失败".$upload->errmsg(); } } ?>
ファイルアップロード
<フォーム名 = "form1" enctype="multipart/form-data" method="post" action="">
クラスのアップロード
アップロード.class.php
//
// ------------------------ ---------------------------------------
// | ファイルのアップロード >|// | 著者: whxbb(whxbb@21cn.com) ---------------------------- ------------------ ---------------
//
// $Id:upload.class. php,v 1.0 2001/10/14 14:06:57 whxbb Exp $
//
$UPLOAD_CLASS_ERROR = array( 1 => 'この形式ファイルはアップロードできません', 3 => 'ファイルはすでに存在します',
4 => '不明なエラー',
5 => 'ファイルが大きすぎます'
);
/**
* 目的
* ファイルのアップロード
*
* 例
*
$fileArr['file'] = $file;
$fileArr['name'] = $file_name ;
$fileArr ['size'] = $file_size;
$fileArr['type'] = $file_type;
// アップロードできるファイルの種類
$filetypes = array('gif ','jpg', 'jpge','png');
// ファイルアップロードディレクトリ
$savepath = "/usr/htdocs/upload/";
// 上限なし 0 制限なし
$maxsize = 0;
// 上書き 0 は許可されません 1 は許可されます
$overwrite = 0;
$upload = new Upload($fileArr, $file_name, $savepath, $filetypes, $overwrite , $maxsize);
if (!$upload->run())
{
echo $upload->errmsg();
}
*
* @author whxbb(whxbb@21cn.com)
* @version 0.1
*/
クラスアップロード
{
var $file;
var $file_name;
var $file_size;
var $file_type;
/**名前を付けて保存*/
var $savename;
/**パスを保存*/
var $savepath;
/**ファイル形式の制限*/
var $fileformat = array();
/**オーバーレイモード*/
var $overwrite = 0;
/**ファイルの最大バイト数*/
var $maxsize = 0;
/**ファイル拡張子*/
var $ext;
/**エラーコード*/
var $errno;
/**
* コンストラクター
* @param $fileArr ファイル情報配列 'file' 一時ファイルのパスとファイル名
'name' アップロードファイル名
'size' アップロードファイルサイズ
' アップロードファイルの種類
* @param savename ファイル保存名
* @param savepath ファイル保存パス
* @param fileformat ファイル形式制限配列
* @param overwrite 上書き可否 1、上書き許可 0、上書き禁止
* @param maxsize 最大ファイルサイズ
*/
function Upload($fileArr, $savename, $savepath, $fileformat, $overwrite = 0, $maxsize = 0) {
$this->file = $fileArr['file'];
$this->file_name = $fileArr['name'];
$this->file_size = $fileArr['size'] ;
$this->file_type = $fileArr['type'];
$this->get_ext();
$this->set_savepath($savepath);
$this->set_fileformat($fileformat);
$this->set_overwrite($overwrite);
$this->set_savename($savename);
$this->set_maxsize( $maxsize);
}
/**アップロード*/
function run()
{
/**ファイル形式を確認する*/
if (! $this->validate_format())
{
$this->errno = 1;
return false;
/**ディレクトリが書き込み可能かどうかを確認する*/
場合(!@is_writable($this->savepath))
{
$this->errno = 2;
return false;
}
/**上書きが許可されていない場合は、ファイルが既に存在するかどうかを確認してください*/
if($this->overwrite == 0 && @file_exists($this->savepath.$this->savename))
{
$this->errno = 3;
return false;
}
/**サイズ制限がある場合は、ファイルが制限を超えていないか確認してください*/
if ($this->maxsize != 0 )
{
if ($this->file_size > $this->maxsize)
{
$this->errno = 5;
return false;
}
}
/**ファイルのアップロード*/
if(!@copy( $this->file, $this->savepath.$this->savename))
{
$this->errno = 4;
return false;
}
/**一時ファイルを削除する*/
$this->destory();
return true;
}
/**
* ファイル形式チェック
* @access protected
*/
function validate_format ()
{
if (!is_array($this->fileformat)) // 没有格式制限
return true;
$ext = strto lower($this->gt;ext );
reset($this->fileformat);
while(list($var, $key) = each($this->fileformat))
{
if (strto lower( $key) == $ext)
return true;
}
reset($this->fileformat);
return false;
}
/* *
* ファイル拡張子を取得
* パブリックにアクセス
*/
function get_ext()
{
$ext =explode(".", $this->file_name);
$ext = $ext[count($ext) - 1];
$this->ext = $ext;
}
/**
* アップロードされるファイルの最大バイト制限を設定します
* @param $maxsize ファイル サイズ (バイト) 0: 制限なしを意味します
* @access public
*/
function set_maxsize($maxsize)
{
$this ->maxsize = $maxsize;
}
/**
* カバレッジモードを設定します
* @param カバレッジモード 1: カバレッジを許可 0: カバレッジを無効にします
* @access public
*/
function set_overwrite($overwrite)
{
$this->overwrite = $上書き;
}
/**
* アップロードを許可するファイル形式を設定します
* @param $fileformat アップロードを許可するファイル拡張子配列
* @access public
*/
function set_fileformat($fileformat)
{
$this->fileformat = $fileformat;
}
/**
* 保存パスを設定します
* @param $savepath ファイル保存パス: "/"で終わる
* @access public
*/
function set_savepath($savepath)
{
$this->savepath = $savepath;
}
/**
* ファイルの保存名を設定します
* @savename 保存名が空の場合、システムはランダムなファイル名を自動的に生成します
* @access public
*/
function set_savename($savename)
{
if ($savename == '') // ファイル名が設定されていない場合は、ランダムなファイル名が生成されます
{
srand ((double) microtime() * 1000000);
$rnd = rand(100,999);
$name = date('Ymdhis') $rnd;
$name = $name。 ". ".$this->ext;
} else {
$name = $savename;
*
* ファイルの削除
* @param $file 削除するファイルの名前
* @access public
*/
function del($file)
{
if(!@unlink($file))
{
$this->errno = 3;
return false;
}
return true;
}
/**
* 一時ファイルを削除
* @access proctect
*/
function destory()
{
$this ->del( $this->file);
}
/**
* エラーメッセージを取得
* @access public
* @return エラーメッセージ文字列または false
*/
function errmsg()
{
global $UPLOAD_CLASS_ERROR;
if ($this->errno == 0)
return false ?> ;