画像のアップロードは、Web サイトで非常に一般的な機能です。ThinkPHP には、独自の画像アップロード クラス (UploadFile.class.php) と画像モデル クラス (Image.class.php) もあります。画像アップロード機能を実装すると便利です。実装方法は次のとおりです。
1. まずテーブルを作成する必要があります
2. 次に、conf ファイルに設定を追加します (最後の設定は、URL パスを一元管理するためのオプションです)
'TMPL_PARSE_STRING' => array( // アドレス置換。ルート ディレクトリのアップロード ディレクトリの代わりに _UPLOAD_ ディレクトリを使用します
3. 画像モジュールを追加します (任意の名前を選択できます)
$image=M('画像');
$data=$image->order('create_time desc')->find() //最後にアップロードされた画像を取得します
4. 対応するインデックスビューファイル(index.html)を作成します
アップロードできるファイルの種類: gif png jpg 画像ファイル、2 つのサムネイルを生成します。大きな画像には透かしが入れられ、元の画像は生成後に削除されます。
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番目の状況です
http://www.bkjia.com/PHPjc/847863.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/847863.html技術記事 thinkphp は、UploadFile.class.php の画像アップロード関数を実装しています。画像のアップロードは、Web サイトで非常に一般的な機能です。ThinkPHP には、独自の画像アップロード クラス (UploadFile.class.php) と画像モデル クラスもあります。