Rumah php教程 php手册 ThinkPHP多图上传带缩略图功能

ThinkPHP多图上传带缩略图功能

Jun 07, 2016 am 11:42 AM

功能简介:
支持多图上传并生成缩略图
可自定义缩略图数量与尺寸
文件默认保存在 “./data/attachment/photo/年月/日/” 目录下

访问地址:http://localhost/upload/photo

如有问题请各位大侠海涵并指正,谢谢~

效果:
ThinkPHP多图上传带缩略图功能

首先新建一个控制器文件,命名为:UploadController.class.php,
位置:application\Home\Controller\UploadController.class.php

控制器代码:<?php <br /> <br> /**<br>  * 图片上传控制器<br>  * @author    Jiekii <jiekii><br>  * @website    http://jiekii.com<br>  * @date        2014-02-21<br> **/<br> <br> namespace Home\Controller;<br> <br> class UploadController extends HomeController {<br>     public function photo() {<br>         if(IS_POST) {<br>             //设置文件保存目录<br>             $baseDir = './data/';<br>             $attachDir = './attachment/photo/'.date('Ym').'/';<br>             $subDir = date('d');<br>             $saveName = date('His').strtolower(random(16));<br> <br>             //上传类配置信息<br>             $config = array(<br>                 'maxSize' =&gt; 2097152,<br>                 'exts' =&gt; array('jpg', 'jpeg', 'png', 'gif'),<br>                 'rootPath' =&gt; $baseDir,<br>                 'savePath' =&gt; $attachDir,<br>                 'subName' =&gt; array('date', 'd'),<br>                 'saveName' =&gt; $saveName,<br>                 'hash' =&gt; false<br>             );<br> <br>             //初始化上传类<br>             $upload = new \Think\Upload($config);<br> <br>             //检查是否选择图片<br>             $inputName = 'photo';<br>             $total = 0;<br>             $data = array();<br>             foreach($_FILES[$inputName] as $key =&gt; $value) {<br>                 foreach($value as $k =&gt; $v) {<br>                     $data[$k][$key] = $v;<br>                     if($key == 'name' &amp;&amp; $v) {<br>                         $total++;<br>                     }<br>                 }<br>             }<br> <br>             if(!$total) {<br>                 $this-&gt;error('请先选择要上传的图片!');<br>             }<br> <br>             $uploadSuccess = $uploadFailure = 0;<br>             $result = array();<br> <br>             //缩略图列表,数组为空则不生成缩略图<br>             //键为缩略图文件名后缀,例如:20140221abc_a.jpg<br>             //值为缩略图宽/高<br>             $thumbList = array(<br>                 'a' =&gt; array(150, 150),<br>                 'c' =&gt; array(250, 250),<br>                 'm' =&gt; array(500, 500)<br>             );<br> <br>             //初始化缩略图类<br>             if(!empty($thumbList)) {<br>                 $image = new \Think\Image();<br>             }<br> <br>             foreach($data as $key =&gt; $value) {<br>                 if(!$value['name']) continue;<br> <br>                 //如果多图则从第二张开始设置新的文件名<br>                 if($key &gt;= 1) {<br>                     $upload-&gt;saveName = date('His').strtolower(random(16));<br>                 }<br> <br>                 //开始上传<br>                 $file = $upload-&gt;upload(array($inputName =&gt; $value));<br> <br>                 //上传成功<br>                 if(!empty($file)) {<br>                     $uploadSuccess++;<br> <br>                     //缩略图<br>                     if(!empty($thumbList)) {<br>                         $path = $baseDir.$file[$inputName]['savepath'].$upload-&gt;saveName;<br>                         $fileExt = $file[$inputName]['ext'];<br>                         $filePath = $path.'.'.$fileExt;<br> <br>                         //生成缩略图,按照原图的比例<br>                         foreach($thumbList as $thumbName =&gt; $thumbSize) {<br>                             if(!$thumbName || empty($thumbSize)) continue;<br> <br>                             $image-&gt;open($filePath);<br>                             $image-&gt;thumb($thumbSize[0], $thumbSize[1])-&gt;save($path.'_'.$thumbName.'.'.$fileExt);<br>                         }<br>                     }<br>                 } else {<br>                     $uploadFailure++;<br>                 }<br>                 $result[] = array($upload-&gt;getError(), $file);<br>             }<br> <br>             //成功提示<br>             if($uploadSuccess) {<br>                 $this-&gt;success($uploadSuccess.'张图片上传成功!');<br>             } else {<br>                 $this-&gt;error('上传失败!');<br>             }<br>         } else {<br>             $value = array(<br>                 'meta_title' =&gt; '上传照片'<br>             );<br>             $this-&gt;assign($value)-&gt;display();<br>         }<br>     }<br> }</jiekii>html代码:<form> <br>     <p>图片1:<input></p> <br>     <p>图片2:<input></p> <br>     <p>图片3:<input></p> <br>     <p><button>确定上传</button></p> <br> </form>

AD:真正免费,域名+虚机+企业邮箱=0元

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python Jan 04, 2024 am 10:50 AM

Ketahui tentang contoh kod pengenalan untuk pengaturcaraan Python

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori Aug 06, 2023 pm 04:49 PM

Cara menggunakan PHP untuk menulis kod fungsi pengurusan inventori dalam sistem pengurusan inventori

Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar Feb 19, 2024 pm 03:00 PM

Pembolehubah PHP dalam tindakan: 10 contoh penggunaan sebenar

Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web Mar 04, 2024 pm 04:54 PM

Contoh pengaturcaraan bahasa Go: contoh kod dalam pembangunan web

Java melaksanakan kod isihan gelembung mudah Java melaksanakan kod isihan gelembung mudah Jan 30, 2024 am 09:34 AM

Java melaksanakan kod isihan gelembung mudah

Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go Mar 04, 2024 pm 03:09 PM

Daripada pemula hingga mahir: Pelaksanaan kod struktur data yang biasa digunakan dalam bahasa Go

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat Jul 05, 2023 pm 09:57 PM

Panduan Sambungan Pengkomputeran Tepi Awan Huawei: Contoh kod Java untuk melaksanakan antara muka dengan cepat

Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java Feb 18, 2024 am 10:52 AM

Panduan dan Contoh: Belajar untuk melaksanakan algoritma isihan pemilihan dalam Java

See all articles