php上传图片 thinkphp,PHP之ThinkPHP框架(验证码、文件上传、图片处理)

验证码

验证码是框架自带有的,比之前使用GD库简单方便许多,其实现原理基本相似,都是生成图片,保存验证码值到Session中,表单提交验证码,然后进行值的对比验证。

简单的显示:

ae7159a7b205ae8ee777d1af83253b8e.png

1

2

3

4 imgsrc="{:captcha_src()}"alt="captcha"style="height: 80px ;width: 200px" />

5

6 br7

8 验证码显示方法29 div>{:captcha_img()}>

10

11 12

13 请输入验证码:inputtype="text"name="check"14

15 16

17 ="submit"value="提交">

18

19 form>

实现点击验证码进行切换:

2fc53e182350982bacaec80c255f9fc6.png

="check"="height: 36px;padding-top: 0px;"autocomplete="off">

4

5 onClick="this.src='{:captcha_src()}'"altstyle="height: 36px ;width: 110px;border: 1px solid #584C4D;vertical-align:middle" 6

7 /><8 9

10 >

控制器里处理验证码:

1 //获取到post传递的验证码2 //不区分大小写

3 $checks=Request::instance()->post("check");5 if(!captcha_check($checks)){6 验证失败

7 echo "验证码输入错误";8

9 }else{10

11 echo "验证码输入成功"12 }

文件上传,支持单文件和多文件,上传的文件会自动保存在public下自动创建的目录中,并返回一系列结果。

单文件:

1 ="{:url('xiao/xiao2')}"="post"enctype="multipart/form-data"2

3 ="file"="filex1"4 ="东小东上传"5

6 >

1 <?namespace app\index\controller;3

4 classXiao5 6 public functionxiao2(){7

8 获取表单上传文件,filex1为表单填写的名字

9 $filex = request()->file("filex1"10

11

12 if($filex){13

14 15 echo $filex->getInfo()["name"];16 echo "--
"17

18 移动到/public/uploads/目录下,DS表示根据系统确定的目录分隔符"/"或“\”

19 $info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads'20 $info21

22 23 //文件的后缀24 // 如输出 jpg

25 $info->getExtension()."
"26

27 保存后的路径28 // 如输出 20160820/42a79759f284b767dfcb2a0197904287.jpg

29 $info->getSaveName()."
"30

31 保存后的文件名32 // 如输出 42a79759f284b767dfcb2a0197904287.jpg

33 $info->getFilename()."
"34

35 }36

37 38 $filex->getError();39

40 }41 }}}

多文件:

实现是利用了数组的原理进行的,上传时将文件内容保存到数组中,处理是通过数组的遍历进行取存。利用数组进行多文件上传,更具扩展性

="http://localhost:8080/ATP5/public/index/xiao/xiao2"2

3 ="filex1[]"4 br/5 6 7 8 9 7 8 $filess = request()->9

10 //文件数组的遍历

11 foreach($filess as 12

13

14 移动方法1:按照系统规则实现文件保存15 //$info = $filex->move(ROOT_PATH . 'public' . DS . 'uploads');17 //移动方法2:保留原文件名,如果重名会覆盖

18 $info=$filex->move(ROOT_PATH . 'public' . DS . 'uploads',iconv("utf-8","gbk",]));19 if($info){

21

22 // 如输出 20160820/42a79759f284b767dfcb2a0197904287.jpg

24 25

27 }28

29 30 31 32 33 }}

图片处理

图片处理集成方法可以实现图片信息的获取、图片的裁剪、图片的压缩、图片上水印等,其操作的图片目录均为public目录下,必须加载 use think\Image;模块

3 usethink\Request;think\Image;6 7 8

9 打开public目录下的图片

10 $image =Image::open('./rr.jpg'11

12 13 //$image =Image::open(request()->file('上传的文件表单名'));14

//-----------------获取图片信息------------16

// 返回图片的宽度

18 $width = $image->width();19

20 返回图片的高度

21 $height = height();22

23 返回图片的类型,如jpeg

24 $type = type();25

26 返回图片的mime类型,如:image/jpeg

27 $mime = mime();29 返回图片的尺寸数组 0 图片宽度 1 图片高度

30 $size = size();31 dump($size) ;32

33 ----------------------------------------34

35 //--------------图片处理-------------------37 //裁剪38 //更改的是原,无需赋值,且会迭代操作,如第二次裁剪会在第一次的基础上进行40 //从位置(0,0)裁剪(宽度,高度)并保存到public中41 //$image->crop(100,200)->save('./crop1.png');42

43 44 //$image->crop(200,100,20)->save('./crop2.png');45

46 //压缩47 //等比例压缩,如最大为150*15048 //$image->thumb(150,150)->save('./thumb1.png');49

50 //等比例裁剪,如果不能到达标准150*150时,将进行图片裁剪

51 /*

52 //常量,标识缩略图居中裁剪类型53 const THUMB_CENTER = 3;54 //常量,标识缩略图左上角裁剪类型55 const THUMB_NORTHWEST = 4;56 //常量,标识缩略图右下角裁剪类型57 const THUMB_SOUTHEAST = 5;58 */

59 $image->thumb(150,150,Image::THUMB_CENTER)->save('./thumb.png');60

61 //为图片上水印

62 63 //常量,标识左上角水印64 const WATER_NORTHWEST = 1;65 //常量,标识上居中水印66 const WATER_NORTH = 2;67 //常量,标识右上角水印68 const WATER_NORTHEAST = 3;69 //常量,标识左居中水印70 const WATER_WEST = 4;71 //常量,标识居中水印72 const WATER_CENTER = 5;73 //常量,标识右居中水印74 const WATER_EAST = 6;75 //常量,标识左下角水印76 const WATER_SOUTHWEST = 7;77 //常量,标识下居中水印78 const WATER_SOUTH = 8;79 //常量,标识右下角水印80 const WATER_SOUTHEAST = 9;81 82 图片水印83 //参数1为水印图片地址,参数2为水印位置,参数3为透明度[0,100],100为原图

84 $image->water('./thumb.png',Image::WATER_NORTHWEST,10)->save('img/water_image.png'85

86 文字水印87 //参数(文字内容,文字字体,大小,RGB,位置,相对位置偏移量,旋转)

88 $image->text('东小东','font/tt.ttf',30,'#ff00ff',Image::WATER_SOUTHEAST,-20)->save('img/text_image1.png'89

90 }91 }

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值