ThinkPHP のファイルアップロードメソッドの例をカプセル化します、
この記事の例では、ThinkPHP をカプセル化し、参考のために全員と共有するファイル アップロード メソッドについて説明します。詳細は以下の通りです
最近、WBlogのアップロード機能が最適化されました。改良されたアップロード機能では、サムネイルのアップロード、画像のアップロード、透かしの生成、ファイルのアップロードが実現でき、アップロードされる添付ファイルのサイズ(ファイルサイズ)、タイプ(ファイルタイプ)、透かし(画像の場合)をバックグラウンドで設定できるようになりました。さらに、アップロードされたファイルは、対応するフォルダーに分類して保存できるため、管理が容易になります。
以下は、改善されたアップロード機能の簡単な説明です。
サムネイルのアップロード
以前のサムネイルアップロード機能はKindEditorのアップロードコンポーネントを使用していましたが、アップロード前に画像がサムネイル化されていない限り、アップロード機能は何をアップロードしても、システムを通じてサムネイルのサイズを設定できます。元の画像がどれほど大きくても、設定されたサイズの画像が生成され、元の画像が自動的に削除されるため、スパム情報の蓄積を効果的に削減できます。アップロードしたサムネイルは自動的にThumbフォルダーに保存されます
写真のアップロード
写真をアップロードすると、必要に応じて、写真のサイズ、アップロードする写真の種類を設定し、透かしを追加できます。
ファイルアップロード
圧縮ファイル、ドキュメントファイルなど。必要に応じてアップロードファイルの種類とサイズを追加できます。
透かしを追加
アップロードした写真に透かしを追加します。
上記のアップロード関数をモデル クラス AttachModel.class.php にカプセル化し、それを行うために 2 つのメソッドを使用しました:
コードをコピーします コードは次のとおりです:
/**
* 添付ファイルのアップロード: 写真、サムネイル、ファイルをアップロードします
* @param string $model アップロードするモジュール
* @param bool $type アップロードされたファイルのタイプ: image (画像); file (ファイル);
*/
パブリック関数アップロード($model = null, $type = 'image'){
//アップロードクラスをインポートします
import('ORG.NET.UploadFile');
$upload = new UploadFile();
$ Upload-& gt; saverule = 'uniqid' // アップロードファイルのルールを設定します
;
$ Upload-& gt; maxsize = c ('maxsize')*1024*1024; // アップロードファイルのサイズ
$ upload-> Alowexts = Explode( '、'、c( 'AllowExts'));
if ($model){
$upload->savePath = './Public/Uploads/'.$model.'/';
If (!file_exists($upload->savePath)) {
mkdir($upload->savePath);
$upload->savePath = './Public/Uploads/Thumb/';
If (!file_exists($upload->savePath)) {
mkdir($upload->savePath);
If (in_array($type,array('image','thumb'))){
$upload->thumb = true;
$upload->thumbPrefix = 'wb_';
$upload->thumbMaxWidth = $type=='thumb' ? C('THUMB_W') :C('IMAGE_W');//サムネイルの幅
$ upload-> thumbmaxheight = $ == 'thumb'( 'thumb_h'):c( 'image_h'); // sumbnail height
If (!$upload->upload()) {
return $upload->getErrorMsg();
$uploadlist = $upload->getUploadFileInfo();
If(C('ISWATER') && $type=='image'){
import('ORG.Util.Image');
//m_thumbnail にウォーターマークを追加, Image::water('元のファイル名', 'ウォーターマーク画像アドレス')foreach ($uploadlist as $key => $value){
Image::water($value['savepath'] . 'wb_' . $value['savename'], './Public/admin/images/water.png');
If (in_array($type,array('画像','ファイル'))){
return $this->_add($uploadlist,$model);
return $ uploadlist [0] ['savename']; //サムネイル保存名を返します
}
/*
* アップロードされた添付ファイルは、添付に必要なデータに統合され、テーブルに格納され、配列として返されます
* */
プライベート関数 _add($uploadlist,$module=''){
//$j = count($uploadlist);
$v = array();
foreach ($uploadlist as $key => $value){
$ v [$ key] ['name']
$v[$key]['savename']
$ v [$ key] ['SavePath']
$ v [$ key] ['size']
$ v [$ key] ['userid']
$v[$key][= 」 _
$ v [$ key] ['alt']
$ v [$ key] ['module']
$ v [$ key] ['Recordid']
$this->add($v[$key]);
If ($ this-& gt; サム) {
$ v [$ key] ['prefix']
$v[$key]['id'] = M('Attach')->getLastInsID();
$v を返します。
}
この記事で説明した内容が、皆様の ThinkPHP フレームワーク プログラミングに役立つことを願っています。
http://www.bkjia.com/PHPjc/904008.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/904008.html技術記事 ThinkPHP をカプセル化するファイル アップロード メソッドの例 この記事では、ThinkPHP をカプセル化するファイル アップロード メソッドの例について説明します。参考のために共有します。詳細は以下の通りです: 最近、...