まずメソッド呼び出しの例を見てみましょう:
Rendering:
まずクラスをアップロードしてください?/*
TITLE : CLASS Upload
FILE : class.upload .php
説明: アップロード ユーティリティを提供するため、
作者: Peng Zhang zpadmin()gmail.com http://blog.neten.de
根拠: whxbb whxbb()21cn.com
執筆: 2005 11 月 20 日
変更: 2006 MAR 01
psdshow (psdshow(at)yahoo.com.cn) によって変更 2007-11-30
ライセンス : GPL
リビジョン : V1.0.2
*/
class Upload{
var $saveName;// 名前を保存
var $savePath; // 保存パス
var $fileFormat = array('gif','jpg','doc','application/octet-stream') // ファイル形式と MIME の制限
var $overwrite = 0; // 上書きモード
var $maxSize = 0; // ファイルの最大バイト数
var $thumb = 0; // サムネイルを生成するかどうか
var $thumbWidth = 130; var $thumbHeight = 130; // サムネイルの高さ
var $thumbPrefix = "_thumb_"; // サムネイルのプレフィックス
var $returnArray= array(); // すべてのファイルの情報を返します
$returninfo= array();// 各ファイルの情報を返す
// コンストラクター
// @param $fileFormat ファイル形式制限配列
// @param $maxSize ファイル最大size
// @param $overwritet 上書き可否 1、上書き許可 0、上書き禁止
function Upload($savePath, $fileFormat='',$maxSize = 0, $overwrite = 0) {
$this-> setSavepath( $savePath);
$this->setMaxsize($maxSize);
$this->setOverwrite($overwrite);
$this->setThumb( $this ->thumb, $this->thumbWidth,$this->thumbHeight);
$this->errno = 0;
}
// Upload
// @param $fileInput Web ページ Form ( form) 入力の名前
function run($fileInput,$changeName = 1){
if(isset($_FILES[$fileInput])){
$fileArr = $_FILES[$fileInput ];
if(is_array($fileArr['name'])){//同じファイル ドメイン名を持つ複数のファイルをアップロードします
for($i = 0; $i < count($fileArr) ['名前']); $i++){
$ar['tmp_name'] = $fileArr['tmp_name'][$i];
$ar['name'] = $fileArr['name'][$ i];
$ar[ 'type'] = $fileArr['type'][$i];
$ar['size'] = $fileArr['size'][$i];
$ar[' error'] = $fileArr[ 'error'][$i];
$this->getExt($ar['name']);//拡張子を取得して $this->ext に割り当てます。次のサイクルで更新されます
$this->setSavename($changeName == 1 ? '' : $ar['name']);// 保存ファイル名を設定します
if($this->copyfile( $ar)){
$this->returnArray [] = $this->returninfo;
}else{
$this->returninfo['error'] = $this->errmsg();
$ this->returnArray[] = $this-> ;returninfo;
}
}
return $this->errno ? false : true;
}else{//単一のファイルをアップロードします
$this->getExt( $ filearr ['name']); ->returnArray[] = $this->returninfo;
}else{
$this->returninfo['error'] = $this->errmsg();
$this->returnArray[] = $ This-& gt; Returninfo;}}
Return $ This-& gt; False;}
$ This-& GT; Return false;
}
//単一ファイルアップロード
// @param $fileArray ファイル情報 array
function copyfile($fileArray){
$this->returninfo = array();
// 情報を返します
$this->returninfo[' name'] = $fileArray['name'];
$this->returninfo['saveName'] = $this->saveName;
$this->returninfo['size'] =number_format( ($fileArray ['size'])/1024, 0, '.', ' ');//KB 単位
$this->returninfo['type'] = $fileArray['type'];
// ファイル形式をチェック
if (!$this->validateFormat()){
$this->errno = 11;
return false;
}
// ディレクトリが書き込み可能かどうかを確認します
if(!@is_writable($this- > ;savePath)){
$this->errno = 12;
return false;
}
// 上書きが許可されていない場合は、ファイルが既に存在するかどうかを確認します
//if($this->overwrite == 0 && @file_exists($this->savePath.$fileArray['name'])){
// $this->errno = 13;
// return false;
//}
//サイズ制限、ファイルが制限を超えているかどうかを確認します
if ($this->maxSize != 0 ){
if ($fileArray["size"] > $this->maxSize){
$this-> errno = 14;
return false;
}
}
// ファイルアップロード
if(!@move_uploaded_file($fileArray["tmp_name"], $this->savePath.$this->saveName)){
$ this->errno = $fileArray["error"];
return false;
}elseif( $this->thumb ){// サムネイルを作成します
$CreateFunction = "imagecreatefrom".($this->ext == 'jpg' ? 'jpeg' : $this->ext);
$SaveFunction = "image".($this->ext == 'jpg' ? 'jpeg' : $this->ext) ;
if (strto lower ($CreateFunction) == "imagecreatefromgif"
&& !function_exists("imagecreatefromgif")) {
$this->errno = 16;
return false;
} elseif (strto lower($CreateFunction) == "imagecreatefromjpeg"
&& !function_exists("imagecreatefromjpeg")) {
$this->errno = 17;
return false;
} elseif (!function_exists($CreateFunction)) {
$this->errno = 18;
return false;
}
$Original = @$CreateFunction($this->savePath.$this->saveName);
if (!$Original) {$this->errno = 19; }
$originalHeight = ImageSY($Original);
$originalWidth = ImageSX($Original);
$this->returninfo['originalHeight'] = $originalHeight;
$this->returninfo['originalWidth'] = $originalWidth;
/ *
if (($originalHeight < $this->thumbHeight
&& $originalWidth < $this->thumbWidth)) {
// サムネイルが予想より小さい場合は、Copy
move_uploaded_file ($this->savePath.$this->saveName,
$this->savePath.$this->thumbPrefix.$this->saveName);
} else {
if( $originalWidth > $ this->thumbWidth ){// 幅 > 幅を設定
$this->thumbWidth ->親指の高さ){// 高さを設定
( $originalHeight >
if($thumbWidth > $this->thumbWidth){// 宽 > 設定宽度
$thumbHeight = $this->thumbWidth * ( $thumbHeight / $thumbWidth );
$thumbWidth = $this->thumbWidth ;
}
*/
$radio=max (($originalWidth/ $this->thumbWidth),($originalHeight/$this->thumbHeight));
$thumbWidth=(int)$originalWidth/$radio;
$thumbHeight=(int)$originalHeight/$radio;
if ($thumbHeight == 0) $thumbHeight = 1;
$createdThumb = imagecreatetruecolor($thumbWidth, $thumbHeight);
if ( !$createdThumb ) {$this- >エラー番号 = 20; return false;}
if ( !imagecopyresampled($createdThumb, $Original, 0, 0, 0, 0,
$thumbWidth, $thumbHeight, $originalWidth, $originalHeight) )
{$this->errno = 21; return false;}
if ( !$SaveFunction($createdThumb,
$this->savePath.$this->thumbPrefix.$this->saveName) )
{$this->errno = 22; return false;}
}
// 删除临時文件
/*
if(!@$this->del($fileArray["tmp_name"])){
return false;
}
*/
return true ;
}
function validateFormat(){
if(!is_array($this->fileFormat)
|| in_array(strto lower($this->ext), $this- >fileFormat)
|| in_array(strto lower($this->returninfo['type']), $this->fileFormat) )
return true;
else
return false;
}
// 获取文件扩展名前
// @param $fileName 上の原文ファイル名
function getExt($fileName){
$ext =explode(".", $fileName);
$ext = $ext[count($ext) - 1] ;
$this->ext = strto lower($ext);
}
// @param $maxSize 文件大小(bytes) 0:表示無制限
function setMaxsize( $maxSize){
$this->maxSize = $maxSize;
}
// 設置文件格式限定
// @param $fileFormat 文件格式数组
function setFileformat($fileFormat){
if(is_array($fileFormat) ){$this->fileFormat = $fileFormat ;}
}
// @param overwrite 被盖モード 1:允许被盖 0:禁止被盖
function setOverwrite($overwrite){
$this- >overwrite = $overwrite;
}
// 設置保存路径
// @param $savePath 文件保存路径:以 "/" 结尾,若没有 "/",则补上
function setSavepath($savePath) {
$this->savePath = substr( str_replace("","/", $savePath) , -1) == "/"
? $savePath : $savePath."/";
}
// @param $thumb = 1 生成缩略図 $thumbWidth,$thumbHeight は缩略図の宽と高
function setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0){
$this->thumb = $thumb;
if($thumbWidth) $this->thumbWidth = $thumbWidth;
if($thumbHeight) $this->thumbHeight = $thumbHeight;
}
// @param $saveName 保存名,如果是空,则系统自動生成一个随机的文件名
function setSavename($saveName){
if ($saveName == ''){ // 如果未設置文件名,则一个随机文件名
$name = date('YmdHis')."_".rand(100,999).'.'.$this->ext ;
// 判断文件が存在するかどうか、不允许重复文件
if(file_exists($this->savePath . $name)){
$name = setSavename($saveName);
}
} else {
$name = $saveName;
}
$this->saveName = $name;
}
// 删除文件
// @param $fileName 希望の删除対象文件名
function del($fileName){
if(!@unlink($fileName)){
$this->errno = 15;
return false ;
}
return true;
}
// 上に送信された情報
function getInfo(){
return $this->returnArray;
}
// 错误情報
function を取得します$ UploadClassError = array(
0 =>'エラーはありません。ファイルは正常にアップロードされました。',
1 =>'アップロードされたファイルは、php.ini の Upload_max_filesize ディレクティブを超えています。',
2 =>'アップロードされたファイルは HTML フォームで指定された MAX_FILE_SIZE を超えています。',
3 =>'アップロードされたファイルは部分的にのみアップロードされました。',
4 =>'ファイルはアップロードされませんでした。',
6 =>'一時フォルダーがありません。PHP 4.3.10 および PHP 5.0.3 で導入されました。',
7 =>'PHP 5.1.0 で導入されました。',
10 =>'入力名は次のとおりです。利用できません!',
11 =>'アップロードされたファイルは許可されていません!',
12 =>'ディレクトリに書き込みできません!',
13 =>'ファイルはすでに存在します!',
14 =>'ファイルは次のとおりです大きすぎます!',
15 =>'ファイルの削除に失敗しました!',
16 =>'お使いの PHP のバージョンには GIF サムネイルがサポートされていないようです。',
17 =>'お使いの PHP のバージョンには、GIF サムネイルがサポートされていないようです。 JPEG サムネイル サポートがあるようです。',
18 =>'お使いの PHP のバージョンでは、画像のサムネイル サポートがないようです。',
19 =>'ソース画像をコピーしようとしたときにエラーが発生しました。
お使いの php ('.phpversion().') のバージョンでは、このイメージ タイプがサポートされていない可能性があります。',
20 =>'新しいイメージを作成しようとしたときにエラーが発生しました。',
21 =>'ソース画像をサムネイル画像にコピー中にエラーが発生しました。',
22 =>'サムネイル画像をファイルシステムに保存中にエラーが発生しました。
このフォルダーに対する読み取りアクセスと書き込みアクセスの両方が PHP に設定されていることを確認していますか?',
);
if ($this->errno == 0)
return false;
else
return $uploadClassError[$this ->errno];
}
}
?>
if($_FILES['uploadinput']['name'] <> ""){
//アップロード ファイル class が含まれます
require_once ('class.upload.php');
//ファイルのアップロードを設定しますdirectory
$savePath = "upload";
//ディレクトリを作成します
makeDirectory($savePath);
//許可されるファイルの種類
$fileFormat = array('gif','jpg','jpge','png');
//ファイル サイズ制限、単位: バイト、1KB = 1000 バイト
//0 は制限なしを意味しますが、php.ini の Upload_max_filesize 設定の影響を受けます
$maxSize = 0;
//元のファイルを上書きしますか? 0 許可されません 1 許可されます
$overwrite = 0;
//アップロード クラスを初期化します
$f = new Upload($savePath, $fileFormat, $maxSize, $overwrite);
//サムネイルを生成したい場合は、メンバー関数 $f->setThumb();
//パラメータリスト: setThumb($thumb, $thumbWidth = 0,$thumbHeight = 0)
//$thumb=1 は、呼び出されない場合、サムネイルを生成することを意味します。値は 0
//$thumbWidth サムネイルの幅、単位はピクセル (px)、空白のままにしてデフォルト値の 130 を使用します
//$thumbHeight サムネイルの高さ、単位はピクセル (px)、空白のままにしてデフォルト値を使用しますvalue 130
$f ->setThumb(1);
//パラメータのuploadinputは、フォーム内のファイルをアップロードするための入力ボックスの名前です
//次の0はファイル名を変更しないことを意味します。 1 の場合、システムはランダムなファイル名を生成します
if (!$f->run('uploadinput',1)){
//$f->errmsg( を通じて最後のエラー メッセージのみを取得できます) ),
//詳細情報は $f-> ;getInfo() から取得可能。
echo $f->errmsg()."
n";
}
//アップロード結果は配列 returnArray に保存されます。
echo "
";<br /> print_r($f->getInfo());<br /> echo "";
Array
(
[0] => Array
=>boy.jpg
'''''''''''''''''' '' '' '' '' '' '' '' '' 'アウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトアウトズトゥオブ 』
[1] =&gt&gt;
[タイプ] => audio/x-ms -wma
=>
http://www.bkjia.com/PHPjc/445081.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/445081.html
技術記事