ホームページ  >  記事  >  バックエンド開発  >  thinkphp が UploadFile.class.php 画像アップロード関数を実装する_PHP チュートリアル

thinkphp が UploadFile.class.php 画像アップロード関数を実装する_PHP チュートリアル

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

thinkphpはUploadFile.class.php画像アップロード機能を実装します

画像のアップロードは、Web サイトで非常に一般的な機能です。ThinkPHP には、独自の画像アップロード クラス (UploadFile.class.php) と画像モデル クラス (Image.class.php) もあります。画像アップロード機能を実装すると便利です。実装方法は次のとおりです。

1. まずテーブルを作成する必要があります

コードをコピーします コードは次のとおりです。
`tp_image` が存在しない場合はテーブルを作成 (
`id` int(11) NOT NULL AUTO_INCREMENT,
`image` varchar(200) NOT NULL,
`create_time` int(11) NOT NULL,
主キー (`id`)
) ENGINE=MyISAM デフォルト CHARSET=utf8;

2. 次に、conf ファイルに設定を追加します (最後の設定は、URL パスを一元管理するためのオプションです)

コードをコピーします コードは次のとおりです。
配列を返します(
'URL_MODEL' => 2, // 環境が PATHINFO をサポートしていない場合は、3 に設定してください
'DB_TYPE' => 'mysql',
'DB_HOST' => 'ローカルホスト',
'DB_NAME' => 'thinkphp',
'DB_USER' => 'root',
'DB_PWD' => '',
'DB_PORT' => '3306',
'DB_PREFIX' => 'tp_',

'SHOW_PAGE_TRACE' =>true, //ページのデバッグの詳細を表示します

'TMPL_PARSE_STRING' => array( // アドレス置換。ルート ディレクトリのアップロード ディレクトリの代わりに _UPLOAD_ ディレクトリを使用します
'__UPLOAD__' => __ROOT__.'/アップロード',
)、
);
?>

3. 画像モジュールを追加します (任意の名前を選択できます)

コードをコピーします コードは次のとおりです。
class ImageAction は Action{
を拡張します
/**
*インデックスエントリメソッドを作成します
*/
パブリック関数インデックス(){
$image=M('画像'); $data=$image->order('create_time desc')->find() //最後にアップロードされた画像を取得します
; $this->assign('data',$data);
$this->display();
}
?>

4. 対応するインデックスビューファイル(index.html)を作成します

コードをコピーします コードは次のとおりです。




ここにタイトルを挿入



アップロードできるファイルの種類: gif png jpg 画像ファイル、2 つのサムネイルを生成します。大きな画像には透かしが入れられ、元の画像は生成後に削除されます。


thinkphp が UploadFile.class.php 画像アップロード関数を実装する_PHP チュートリアルthinkphp が UploadFile.class.php 画像アップロード関数を実装する_PHP チュートリアル



5. 画像を選択してアップロードボタンをクリックすると、画像モジュールのアップロードメソッドにジャンプします。画像モジュールにはそのようなメソッドがまだないので、作成します

コードをコピーします コードは次のとおりです。
class ImageAction は Action{
を拡張します
/**
*インデックスエントリメソッドを作成します
*/
パブリック関数インデックス(){
$image=M('画像'); $data=$image->order('create_time desc')->find() //最後にアップロードされた画像を取得します
;
var_dump($data);
$this->assign('data',$data);
$this->display();
}

//アップロードされたファイルが空でない場合は、_upload メソッドにジャンプします
パブリック関数アップロード(){
//空でない場合
if(!empty($_FILES))
{
$this->_upload();
}

}

6. 送信内容が NULL でない場合は、_upload メソッドにジャンプします。このメソッドは画像アップロード機能を実装します

コードをコピーします コードは次のとおりです。 class ImageAction は Action{ を拡張します
/**
*インデックスエントリメソッドを作成します
*/
パブリック関数インデックス(){
$image=M('画像'); $data=$image->order('create_time desc')->find() //最後にアップロードされた画像を取得します
;
var_dump($data);
$this->assign('data',$data);
$this->display();
}


//アップロードされたファイルが空でない場合は、_upload メソッドにジャンプします
パブリック関数アップロード(){
//空でない場合
if(!empty($_FILES))
{
$this->_upload();
}

}


/***
*画像アップロードを実装
*/
パブリック関数 _upload(){
import('@.ORG.UploadFile');
//アップロードクラスをインポートします
$upload = new UploadFile();
//アップロードファイルサイズを設定します
$upload->maxSize = 3292200;
//アップロードファイルの種類を設定します
$upload->allowExts =explode(',', 'jpg,gif,png,jpeg');
//添付ファイルのアップロードディレクトリを設定します
$upload->savePath = './Uploads/';
//この設定ではサムネイルを生成する必要がありますが、これは画像ファイルに対してのみ有効です
$upload->thumb = true;
//参照画像ライブラリのパッケージパスを設定します
$upload->imageClassPath = '@.ORG.Image';
//サムネイルを生成する必要があるファイルのサフィックスを設定します
$upload->thumbPrefix = 'm_,s_' // 2 つのサムネイルを生成します
; //サムネイルの最大幅を設定します
$upload->thumbMaxWidth = '400,100';
//サムネイルの最大高さを設定します
$upload->thumbMaxHeight = '400,100';
//アップロードファイルのルールを設定します
$upload->saveRule = 'uniqid';
//元画像を削除
$upload->thumbRemoveOrigin = true;


//アップロードに失敗した場合
if (!$upload->upload())
{
//アップロード例外をキャッチ
$this->error($upload->getErrorMsg());
}
それ以外は
{
//アップロードに成功したファイル情報を取得します
$uploadList = $upload->getUploadFileInfo();


//画像クラスをインポートします
import('@.ORG.Image');
//m_thumbnailにウォーターマークを追加, Image::water('元のファイルパス', 'ウォーターマーク画像アドレス')
Image::water($uploadList[0]['savepath'] . 'm_' . $uploadList[0]['savename'], APP_PATH.'Tpl/Public/Images/logo.png');

//フィールド画像に画像名を割り当てます
$_POST['画像'] = $uploadList[0]['保存名'];
}
$model = M('画像');
//現在のデータオブジェクトを保存します
$data['画像'] = $_POST['画像'];
$data['create_time'] = NOW_TIME;
$list = $model->add($data);
if ($list !== false)
{
$this->success('画像が正常にアップロードされました!');
}
それ以外は
{
$this->error('画像のアップロードに失敗しました!');
}
}
}
?>



アップロードが成功し、2 つのサムネイルが生成されました

説明する必要があるのは次のとおりです:

ThinkPHP に付属する画像アップロード クラス (UploadFile.class.php) と画像モデル クラス (Image.class.php) には、ThinkPHP パッケージのフル バージョンが必要です。

そうでない場合は、Lib にフォルダー (ORG) を作成し、公式 Web サイトにアクセスして拡張パッケージをダウンロードし、これら 2 つのファイルを ORG フォルダーに配置する必要があります。

私は2番目の状況です


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/847863.html技術記事 thinkphp は、UploadFile.class.php の画像アップロード関数を実装しています。画像のアップロードは、Web サイトで非常に一般的な機能です。ThinkPHP には、独自の画像アップロード クラス (UploadFile.class.php) と画像モデル クラスもあります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。