ThinkPHP是国内比较流行的轻量级的PHP框架,它在国内流行的一个最主要的因素在于它的说明文档非常健全完善,以及它源码内的注释都是中文的,方便于英语能力较差的程序员学习.
图片上传在网站里是很常用的功能.ThinkPHP里也有自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php)。方便于我们去实现图片上传功能.
1.我们首先需要创建一个表
<span 1</span> CREATE TABLE <span IF</span><span NOT EXISTS `tp_image` ( </span><span 2</span> `id` int(11) NOT <span NULL</span> AUTO_INCREMENT, <span 3</span> `image` varchar(200) NOT <span NULL</span>, <span 4</span> `create_time` int(11) NOT <span NULL</span>, <span 5</span> PRIMARY <span KEY</span><span (`id`) </span><span 6</span> ) ENGINE=MyISAM <span DEFAULT</span> CHARSET=utf8;
2.然后再conf文件里添加配置(最后一段配置是可选的,只是为了方便统一管理URL路径)
<?<span php </span><span return</span> <span array</span><span ( </span>'URL_MODEL' => 2, <span //</span><span 如果你的环境不支持PATHINFO 请设置为3</span> 'DB_TYPE' => 'mysql', 'DB_HOST' => 'localhost', 'DB_NAME' => 'thinkphp', 'DB_USER' => 'root', 'DB_PWD' => '', 'DB_PORT' => '3306', 'DB_PREFIX' => 'tp_', 'SHOW_PAGE_TRACE' =><span true</span>, <span //</span><span 显示页面调试明细</span> 'TMPL_PARSE_STRING' => <span array</span>( <span //</span><span 地址替换,用_UPLOAD_目录 代替 根目录下的Upload目录</span> '__UPLOAD__' => __ROOT__.'/Uploads',<span )</span>,<span ); </span>?>
3.添加一个Image模块(名字可以随便取)
<?<span php </span><span class</span> ImageAction <span extends</span><span Action{ </span><span /*</span><span * * 创建index 入口方法 </span><span */</span> <span public</span> <span function</span><span index(){ </span><span $image</span>=M('Image'<span ); </span><span $data</span>=<span $image</span>->order('create_time desc')->find(); <span //</span><span 获取最后上传图片</span> <span $this</span>->assign('data',<span $data</span><span ); </span><span $this</span>-><span display(); } </span>?>
4.创建相应index视图文件(index.html)
<!DOCTYPE html <span PUBLIC</span> "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> <style type="text/css"> <span #</span><span img{height:22px; border:#000 2px solid}</span> <span #</span><span button{height:30px; width:100px;}</span> </style> </head> <body> <div <span class</span>="result" >上传允许文件类型:gif png jpg 图像文件,并生成2张缩略图,其中大图带水印,生成后会删除原图。</div><br> <notempty name="data"><img src="__UPLOAD__/m_{<span $data</span alt="ThinkPHP图片上传" >.image}" /> <img src="__UPLOAD__/s_{<span $data</span alt="ThinkPHP图片上传" >.image}" /></notempty> <form action="__URL__/upload" method="post" enctype="multipart/form-data"> <input type="file" name="image" id="img"/> <input type="submit" value="上传" id="button"> </form> </body> </html>
5.选择图片,点击上传按钮后,会跳到Image模块的upload方法上,Image模块上现在还没有这个方法,于是我们创建它
<?<span php </span><span class</span> ImageAction <span extends</span><span Action{ </span><span /*</span><span * * 创建index 入口方法 </span><span */</span> <span public</span> <span function</span><span index(){ </span><span $image</span>=M('Image'<span ); </span><span $data</span>=<span $image</span>->order('create_time desc')->find(); <span //</span><span 获取最后上传图片</span> <span var_dump</span>(<span $data</span><span ); </span><span $this</span>->assign('data',<span $data</span><span ); </span><span $this</span>-><span display(); } <br /> </span><span //</span><span 如果上传的文件不为空,跳转到_upload方法</span> <span public</span> <span function</span><span upload(){ </span><span //</span><span 如果不为空</span> <span if</span>(!<span empty</span>(<span $_FILES</span><span )) { </span><span $this</span>-><span _upload(); } }</span>
6.如果提交的不是NULL,则跳到_upload方法上,此方法实现图片上传的功能
<?<span php </span><span class</span> ImageAction <span extends</span><span Action{ </span><span /*</span><span * * 创建index 入口方法 </span><span */</span> <span public</span> <span function</span><span index(){ </span><span $image</span>=M('Image'<span ); </span><span $data</span>=<span $image</span>->order('create_time desc')->find(); <span //</span><span 获取最后上传图片</span> <span var_dump</span>(<span $data</span><span ); </span><span $this</span>->assign('data',<span $data</span><span ); </span><span $this</span>-><span display(); } </span><span //</span><span 如果上传的文件不为空,跳转到_upload方法</span> <span public</span> <span function</span><span upload(){ </span><span //</span><span 如果不为空</span> <span if</span>(!<span empty</span>(<span $_FILES</span><span )) { </span><span $this</span>-><span _upload(); } } </span><span /*</span><span ** * 实现图片上传 </span><span */</span> <span public</span> <span function</span><span _upload(){ import(</span>'@.ORG.UploadFile'<span ); </span><span //</span><span 导入上传类</span> <span $upload</span> = <span new</span><span UploadFile(); </span><span //</span><span 设置上传文件大小</span> <span $upload</span>->maxSize = 3292200<span ; </span><span //</span><span 设置上传文件类型</span> <span $upload</span>->allowExts = <span explode</span>(',', 'jpg,gif,png,jpeg'<span ); </span><span //</span><span 设置附件上传目录</span> <span $upload</span>->savePath = './Uploads/'<span ; </span><span //</span><span 设置需要生成缩略图,仅对图像文件有效</span> <span $upload</span>->thumb = <span true</span><span ; </span><span //</span><span 设置引用图片类库包路径</span> <span $upload</span>->imageClassPath = '@.ORG.Image'<span ; </span><span //</span><span 设置需要生成缩略图的文件后缀</span> <span $upload</span>->thumbPrefix = 'm_,s_'; <span //</span><span 生产2张缩略图 //设置缩略图最大宽度</span> <span $upload</span>->thumbMaxWidth = '400,100'<span ; </span><span //</span><span 设置缩略图最大高度</span> <span $upload</span>->thumbMaxHeight = '400,100'<span ; </span><span //</span><span 设置上传文件规则</span> <span $upload</span>->saveRule = 'uniqid'<span ; </span><span //</span><span 删除原图</span> <span $upload</span>->thumbRemoveOrigin = <span true</span><span ; </span><span //</span><span 如果上传不成功</span> <span if</span> (!<span $upload</span>-><span upload()) { </span><span //</span><span 捕获上传异常</span> <span $this</span>->error(<span $upload</span>-><span getErrorMsg()); } </span><span else</span><span { </span><span //</span><span 取得成功上传的文件信息</span> <span $uploadList</span> = <span $upload</span>-><span getUploadFileInfo(); </span><span //</span><span 导入图片类</span> import('@.ORG.Image'<span ); </span><span //</span><span 给m_缩略图添加水印, Image::water('原文件路径','水印图片地址')</span> Image::water(<span $uploadList</span>[0]['savepath'] . 'm_' . <span $uploadList</span>[0]['savename'], APP_PATH.'Tpl/Public/Images/logo.png'<span ); </span><span //</span><span 图片名赋值给 字段image</span> <span $_POST</span>['image'] = <span $uploadList</span>[0]['savename'<span ]; } </span><span $model</span> = M('image'<span ); </span><span //</span><span 保存当前数据对象</span> <span $data</span>['image'] = <span $_POST</span>['image'<span ]; </span><span $data</span>['create_time'] =<span NOW_TIME; </span><span $list</span> = <span $model</span>->add(<span $data</span><span ); </span><span if</span> (<span $list</span> !== <span false</span><span ) { </span><span $this</span>->success('上传图片成功!'<span ); } </span><span else</span><span { </span><span $this</span>->error('上传图片失败!'<span ); } } } </span>?>
最后图片上传成功,生成两张缩略图:
需要说明的是:
ThinkPHP里自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php),要完整版的ThinkPHP包才有。
没有的话需要在Lib里创建一个文件夹(ORG),然后去官网下载扩展包把这两个文件放到ORG文件夹中。
我的是第二种情况

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
