本文实例讲述了ThinkPHP实现图片上传操作的方法。分享给大家供大家参考,具体如下:

直接上个例子,其中包括有单图片文件上传、多图片文件上传、以及删除文件的一些操作、放置删除数据库的时候,仅仅删除掉了数据库之中的文件路径、而不是一并删除服务器之中的文件、放置服务器爆炸、、

TP里面common文件夹里面function.php里面自定义方法:

<"htmlcode">
<form action="{:U('Index/infoupload')}" method="post"style="overflow: hidden;clear: both;" enctype="multipart/form-data">
<div 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> -->
</div>
<div 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> -->
</div>
</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文件里面定义、是路径来的

<"htmlcode">
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']

是否大于零;

I can see a bigger world.

更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

标签:
ThinkPHP,图片上传

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“ThinkPHP实现图片上传操作的方法详解”
暂无“ThinkPHP实现图片上传操作的方法详解”评论...

《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线

暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。

艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。

《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。