thinkphp フレームワーク の次のチュートリアル コラムでは、ThinkPHP が画像アップロード機能を実装する方法を紹介します。
単一の画像ファイルのアップロード、複数の画像ファイルのアップロード、およびファイルの削除のいくつかの操作を含む例に直接進みましょう。データベースを削除すると、データベース内のファイル パスのみが削除され、ファイルの削除は行われません。サーバー内のファイルを一緒にアップロードすると、サーバーが爆発する可能性があります...TP の共通フォルダーにある function.php のカスタム メソッド:<?php //文件上传类(可以设置多个参数) function upload($file=null,$maxSize=0,$exts=0,$savePath='') { //调用 $upload = new \Think\Upload();// 实例化上传类 $upload->maxSize = $maxSize;// 设置附件上传大小 $upload->exts = $exts; //array('jpg', 'gif', 'png', 'jpeg'); 设置附件上传类型 $upload->savePath = $savePath; // 设置附件上传目录 // 上传文件 //如果单个文件还是多个文件 if($file){ $info = $upload->uploadOne($file); }else{ $info = $upload->upload(); } //判定是否文件上传成功de if(!$info) { return false; }else{ // 上传成功, return $info; } } //上传图片 function fab_upload($files ,$maxSize = 0,$exts = null,$savePath = '') { //判定文件信息是否为空 if(empty($files)){ return false; } if($exts === null){ $exts = array('jpg', 'gif', 'png', 'jpeg'); }else{ $exts = 0; } $tmp = array(); //将文件信息(数组)用foreach循环遍历, foreach($files as $k => $v){ //判定文件大于0之后,将遍历value作为参数传入upload方法 if($v['size'] > 0){ $res = upload($v,$maxSize,$exts,$savePath); //如果传入成功就会将文件存储路径传入数组$tmp[]之中 if($res){ $tmp[$k] = $res['savepath'].$res['savename']; } } } //将存储传入文件路径的数组return回去 return $tmp; } ?>実際には、どのファイルがアップロードされても関係ありません。 $_FILES 変数領域で制御する必要があります。 上記のメソッドは、アップロード メソッドを呼び出す fab_upload です; HTML では、フォームは Jiang Zi によって書かれています:
<form action="{:U('Index/infoupload')}" method="post"style="overflow: hidden;clear: both;" enctype="multipart/form-data"> <p class="contact_r col-md-4"> <label class="contact_rc contact_file"><span><b>入台證:</b><input class="inp_zj1" type="file" name="rutaiimg" ></span></label> <!-- <a class="contact_sp fancybox" href="images/txz1.jpg" rel="external nofollow" rel="external nofollow" >如圖示</a> --> </p> <p class="contact_r col-md-4"> <label class="contact_rc contact_file"><span><b>通行證:</b><input class="inp_zj2" type="file" name="tongxingimg" ></span></label> <!-- <a class="contact_sp fancybox" href="images/txz1.jpg" rel="external nofollow" rel="external nofollow" >如圖示</a> --> </p> </form>コントローラー アップロードされたファイルの処理方法 (パスとファイル名を結合し、コールバックと同様、ストレージに障害が発生した場合に削除する必要があるファイル)
/*调用写好的方法进行验证*/ $new_thumb = fab_upload($_FILES); // var_dump($new_thumb);die; $input['data']['addtime']=time();//生成申请时间 $input['data']['pretime']=strtotime($input['data']['pretime']);//将传过来的日期转换成时间戳 if($new_thumb && count($new_thumb) > 0){ $input['data'] = array_merge($input['data'],$new_thumb); } $f = $customer->add($input['data']); if($f){ $this->display('Index/infosuccess'); // $this->success("添加成功!",U('Index/infocheck',array('iccid'=>$input['data']['iccid']))); }else{//数据添加失败即删除照片 if($new_thumb){ $p = C('UNLINK_PATH').$new_thumb; unlink($p); } $this->error("添加失败!证件可能已存在"); }UNLINK_PATH 変数は構成で定義されますThinkPHP のファイルで、パス
<?php return array( 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost', // 服务器地址 'DB_NAME' => 'urban', // 数据库名 'DB_USER' => 'root', // 用户名 'DB_PWD' => '123456', // 密码 'DB_PORT' => 3306, // 端口 'DB_PREFIX' => 'fab_', // 数据库表前缀 'DB_CHARSET'=> 'utf8', // 字符集 'CHECK_ROOT' => true, //开启rbac权限 'TMPL_CACHE_ON' => false, // 是否开启模板编译缓存,设为false则每次都会重新编译 'ACTION_CACHE_ON' => false, // 默认关闭Action 缓存 'HTML_CACHE_ON' => false, // 默认关闭静态缓存 'FILE_PATH'=>'http://localhost/urban/Uploads/', 'WEB_PATH' => 'http://localhost/urban/index.php/', 'WEB_URL' => 'http://localhost/urban/', 'UNLINK_PATH' => './Uploads/', 'PWD_KEY' => 'jeiskAsdlLsdfqaiocvwphxzbtu', 'AUTO_LOGIN_TIME'=>3600 * 24 * 7, 'SHOW_PAGE_TRACE'=>true, //追踪模式 'MY_CATCH_DIR' =>'./cache/', //缓存目录 'CODE_PATH' =>'http://localhost/urban/fabp/phpqrcode/', // 存放二维码的目录 'qq_face' =>'http://localhost/urban/Public/site/images/arclist/', //qq表情路径 'wxlogin' => array( 'appid' => 'wx35f5b9e9b90539ae', 'AppSecret' => '4de424bee1529a8abeda9c0c52aad3aa', 'callback' => 'http://localhost/urban/index.php/Home/Login/call_back.html' ), 'topic_pass'=>false, //是否开启话题审核 );から来ています。追加後は、バックグラウンド管理モジュール上の関数を追加および削除するのが自然です。上の図を表示するときは、そのパスの絶対パスを使用します。画像を結合して画像を表示するための HTTP プロトコル;画像の削除は、現在のフォルダーの下にあるアップロード フォルダーであるエントリ ファイル Index.php に基づいています; 呼び出しを覚えておいてください。 ThinkPHP の Upload メソッドと Uploadone メソッドは、アップロードされたファイルのみを返します。アップロード フォルダーの下の保存場所には、「'2016-09-02/57c94e71f0916.png」(これは保存場所でもあります) So削除する場合も表示する場合も、C メソッドを使用して結合する必要があります
if(IS_POST){ $input=I('post.'); $ids=implode(',',$input['id']); $brand=D('brand'); $img=$brand->where("brand_id in ($ids)")->getField('thumb',true); foreach($img as $v){ $p = C('UNLINK_PATH').$v; unlink($p); } $res=$brand->where("brand_id in ($ids)")->delete(); if($res){ $this->success("删除运营商品牌成功!"); }else{ $this->error("删除运营商品牌失败!"); } }foreach を使用する理由は、渡された ID が唯一のものではなく、複数選択して削除するためです。 ; 複数選択を実装し、対応する列 ID の値を渡す方法
<foreach name="list" item="v"> <tr> <td class="center" width="80px"> <label> <input type="checkbox" class="ace" name="id[]" value="{$v.brand_id}"/> <span class="lbl"></span> </label> </td> <td>{$v.brand_name}</td> </tr> </foreach> <tr> <td colspan="2"> <button class="btn btn-xs btn-danger" onclick="return tijiao('del')"> <i class="icon-trash bigger-110"></i> 删除 </button> </td> </tr>上で削除した JavaScript メソッドは次のように記述されます:
<script type="text/javascript"> function tijiao(type){ if(type == 'del'){ $('#my_form').attr('action',"{:U('Admin/Brand/brand_del')}"); }else if(type == 'sort'){ $('#my_form').attr('action',"{:U('Admin/Brand/brand_sort')}"); } return true; } </script>追加: 実際には、ファイルがアップロードされているかどうかを判断するには、このデータを使用するのが最善です:
$_FILES['input_name']['size']ゼロより大きいか;
推奨: "最新の 10 件の thinkphp ビデオ チュートリアル"
以上がThinkPHP が画像アップロードを実装する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。
声明
この記事はjb51で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事
Inzoi:学校と大学への応募方法
4週間前ByDDD
Atomfallのサイトオフィスキーを見つける場所
4週間前ByDDD

ホットツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ドリームウィーバー CS6
ビジュアル Web 開発ツール

メモ帳++7.3.1
使いやすく無料のコードエディター

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

ホットトピック
Gmailメールのログイン入り口はどこですか?
7879
15


Java チュートリアル
1649
14


CakePHP チュートリアル
1410
52


Laravel チュートリアル
1301
25


PHP チュートリアル
1245
29

