下面由thinkphp框架教學欄位來跟大家介紹ThinkPHP怎麼實作圖片上傳功能,希望對需要的朋友有幫助!
直接上個例子,其中包括有單圖片檔案上傳、多圖片檔案上傳、以及刪除檔案的一些操作、放置刪除資料庫的時候,僅僅刪除掉了資料庫之中的檔案路徑、而不是一併刪除伺服器之中的檔案、放置伺服器爆炸...
TP裡面common資料夾裡面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呼叫upload方法的;
在HTML上我們表單是醬紫寫的:
<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之中的config檔裡面定義、是路徑來的
<?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, //是否开启话题审核 );
當新增以後,自然需要在背景管理模組上新增刪除的function
#上面的顯示圖片的時候,用HTTP協定的絕對路徑拼接出來顯示圖片;
而刪除圖片則是,以入口文件index.php為準,是當前資料夾下面的upload資料夾;
記住呼叫ThinkPHP之中的upload、uploadone方法返回來的只是上傳文件在upload資料夾下面的儲存位置、「'2016-09-02/57c94e71f0916.png'」(入庫也這個吧)
所以無論刪除或顯示都需要用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中文網其他相關文章!

thinkphp是国产框架。ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了关于使用think-queue来实现普通队列和延迟队列的相关内容,think-queue是thinkphp官方提供的一个消息队列服务,下面一起来看一下,希望对大家有帮助。

thinkphp基于的mvc分别是指:1、m是model的缩写,表示模型,用于数据处理;2、v是view的缩写,表示视图,由View类和模板文件组成;3、c是controller的缩写,表示控制器,用于逻辑处理。mvc设计模式是一种编程思想,是一种将应用程序的逻辑层和表现层进行分离的方法。

本篇文章给大家带来了关于thinkphp的相关知识,其中主要介绍了使用jwt认证的问题,下面一起来看一下,希望对大家有帮助。

thinkphp扩展有:1、think-migration,是一种数据库迁移工具;2、think-orm,是一种ORM类库扩展;3、think-oracle,是一种Oracle驱动扩展;4、think-mongo,一种MongoDb扩展;5、think-soar,一种SQL语句优化扩展;6、porter,一种数据库管理工具;7、tp-jwt-auth,一个jwt身份验证扩展包。

本篇文章给大家带来了关于ThinkPHP的相关知识,其中主要整理了使用think-queue实现redis消息队列的相关问题,下面一起来看一下,希望对大家有帮助。

thinkphp查询库是否存在的方法:1、打开相应的tp文件;2、通过“ $isTable=db()->query('SHOW TABLES LIKE '."'".$data['table_name']."'");if($isTable){...}else{...}”方式验证表是否存在即可。

在thinkphp3.2中,可以利用define关闭调试模式,该标签用于变量和常量的定义,将入口文件中定义调试模式设为FALSE即可,语法为“define('APP_DEBUG', false);”;开启调试模式将参数值设置为true即可。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Dreamweaver Mac版
視覺化網頁開發工具