Maison >développement back-end >tutoriel php >Comment implémenter l'opération de téléchargement d'image dans ThinkPHP
Cet article présente principalement la méthode de ThinkPHP pour mettre en œuvre l'opération de téléchargement d'images et analyse en détail les étapes spécifiques et les techniques de fonctionnement associées de l'opération de téléchargement d'images thinkPHP. Les amis dans le besoin peuvent s'y référer
Cet article décrit. l'implémentation de ThinkPHP avec des exemples Comment télécharger des images. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :
Passons directement à l'exemple, qui comprend le téléchargement d'un seul fichier image, le téléchargement de plusieurs fichiers image et la suppression de certaines opérations lors de la suppression de la base de données. supprimez-le simplement. Le chemin du fichier dans la base de données, au lieu de supprimer les fichiers du serveur ensemble, provoquant l'explosion du serveur,
Méthode personnalisée dans function.php dans le dossier commun dans TP :
<?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; } ?>
En fait, quel que soit le fichier téléchargé, il doit être contrôlé par la zone de variable $_FILES
La méthode ci-dessus est fab_upload appelant la méthode de téléchargement
In. HTML, notre formulaire est écrit par 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>
Comment traiter les fichiers téléchargés dans le contrôleur (chemin d'épissage et nom du fichier, et fichiers qui doivent être supprimés en cas d'échec du stockage, similaire aux rappels)
/*调用写好的方法进行验证*/ $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("添加失败!证件可能已存在"); }
où les variables UNLINK_PATH sont définies dans le fichier de configuration dans ThinkPHP et proviennent du chemin
<?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, //是否开启话题审核 );
Après l'ajout, il est naturel d'ajouter et de supprimer la fonction sur la gestion en arrière-plan module
L'image ci-dessus est affichée Lorsque l'image est affichée, le chemin absolu du protocole HTTP est utilisé pour l'assembler
et pour supprimer l'image, le fichier d'entrée index.php ; prévaudra, qui est le dossier de téléchargement sous le dossier actuel ;
N'oubliez pas que l'appel des méthodes upload et uploadone dans ThinkPHP renvoie uniquement l'emplacement de stockage du fichier téléchargé sous le dossier de téléchargement, "'2016-09-02 /57c94e71f0916.png'" (c'est aussi la façon de le stocker)
Donc, indépendamment de la suppression ou de l'affichage, vous devez utiliser la méthode C pour l'assembler
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("删除运营商品牌失败!"); } }
Le la raison pour laquelle foreach est utilisé ; c'est parce que l'identifiant transmis n'est pas le seul ; il s'agit d'une sélection multiple et d'une suppression
Comment réaliser plusieurs sélections et transmettre la valeur de l'ID de colonne correspondant ?
<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>
La méthode javascript supprimée ci-dessus s'écrit comme ceci :
<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>
Supplémentaire : En fait, le jugement Il est préférable d'utiliser ces données si le fichier a été téléchargé :
$_FILES['input_name']['size']
est supérieur à zéro ;
Je peux voir un monde plus grand.
Recommandations associées :
ThinkPHP implémente une méthode de suppression du cache en un clic
Exemple de téléchargement de fichier ThinkPHP
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!