600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > thinkphp实现图片上传功能分享【PHP】

thinkphp实现图片上传功能分享【PHP】

时间:2018-10-26 18:58:39

相关推荐

thinkphp实现图片上传功能分享【PHP】

后端开发|php教程

thinkphp,图片上传

后端开发-php教程

1.我们首先需要创建一个表

完整版导航网源码,vscode 代码上移,手动挂载Ubuntu,tomcat设置图片上传,sqlite3数据库原理,梦见自己的手有个洞往外爬虫子,php模拟ip,济宁seo优化网费用,网站下载功能实现教,dw网页设计模板下载lzw

CREATE TABLE IF NOT EXISTS `tp_image` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`image` varchar(200) NOT NULL,

`create_time` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2.然后再conf文件里添加配置(最后一段配置是可选的,只是为了方便统一管理URL路径)

模仿酷狗播放器源码 网络版,部署vscode服务器,ubuntu ssh共享,微服务多个tomcat,爬虫的牌,php ajax传数组,滁州seo推广公司哪家好,源码个人网站,服装模板机密码lzw

<?php

return array(

URL_MODEL => 2, // 如果你的环境不支持PATHINFO 请设置为3

DB_TYPE => mysql,

DB_HOST => localhost,

DB_NAME => hinkphp,

DB_USER => oot,

DB_PWD => \,

DB_PORT => 3306,

DB_PREFIX => p_,

SHOW_PAGE_TRACE =>true, //显示页面调试明细

TMPL_PARSE_STRING => array( // 地址替换,用_UPLOAD_目录 代替 根目录下的Upload目录

\__UPLOAD__ => __ROOT__./Uploads,

),

);

?>

3.添加一个Image模块(名字可以随便取)

卡盟官网源码php,c语言初学vscode,ubuntu编译qt,tomcat启动加载类,爬取数据保存到sqlite3,成都网页设计师招聘,yii2 数据库连接,阿里云服务器 数据释放,全屏横向滚动插件,前端框架怎么调后端接口,谣言爬虫,php自动登录,seo入门基础,springboot群搭建,图片alt标签怎么做,网站管理助手未找到iis,网页头部随滚动条滚动条,wordpress 提问模板,多说 管理后台,微信商城页面,cms颜色管理系统,小飞侠淘宝客程序怎么样lzw

<?php

class ImageAction extends Action{

/**

* 创建index 入口方法

*/

public function index(){

$image=M(Image);

$data=$image->order(create_time desc)->find(); //获取最后上传图片

$this->assign(data,$data);

$this->display();

}

?>

4.创建相应index视图文件(index.html)

Insert title here

#img{height:22px; border:#000 2px solid}

#button{height:30px; width:100px;}

上传允许文件类型:gif png jpg 图像文件,并生成2张缩略图,其中大图带水印,生成后会删除原图。

5.选择图片,点击上传按钮后,会跳到Image模块的upload方法上,Image模块上现在还没有这个方法,于是我们创建它

<?php

class ImageAction extends Action{

/**

* 创建index 入口方法

*/

public function index(){

$image=M(Image);

$data=$image->order(create_time desc)->find(); //获取最后上传图片

var_dump($data);

$this->assign(data,$data);

$this->display();

}

//如果上传的文件不为空,跳转到_upload方法

public function upload(){

//如果不为空

if(!empty($_FILES))

{

$this->_upload();

}

}

6.如果提交的不是NULL,则跳到_upload方法上,此方法实现图片上传的功能

<?php

class ImageAction extends Action{

/**

* 创建index 入口方法

*/

public function index(){

$image=M(Image);

$data=$image->order(create_time desc)->find(); //获取最后上传图片

var_dump($data);

$this->assign(data,$data);

$this->display();

}

//如果上传的文件不为空,跳转到_upload方法

public function upload(){

//如果不为空

if(!empty($_FILES))

{

$this->_upload();

}

}

/***

* 实现图片上传

*/

public function _upload(){

import(@.ORG.UploadFile);

//导入上传类

$upload = new UploadFile();

//设置上传文件大小

$upload->maxSize = 3292200;

//设置上传文件类型

$upload->allowExts= explode(,, jpg,gif,png,jpeg);

//设置附件上传目录

$upload->savePath = ./Uploads/;

//设置需要生成缩略图,仅对图像文件有效

$upload->thumb = true;

// 设置引用图片类库包路径

$upload->imageClassPath= @.ORG.Image;

//设置需要生成缩略图的文件后缀

$upload->thumbPrefix = m_,s_; //生产2张缩略图

//设置缩略图最大宽度

$upload->thumbMaxWidth= 400,100;

//设置缩略图最大高度

$upload->thumbMaxHeight= 400,100;

//设置上传文件规则

$upload->saveRule = uniqid;

//删除原图

$upload->thumbRemoveOrigin = true;

//如果上传不成功

if (!$upload->upload())

{

//捕获上传异常

$this->error($upload->getErrorMsg());

}

else

{

//取得成功上传的文件信息

$uploadList = $upload->getUploadFileInfo();

//导入图片类

import(@.ORG.Image);

//给m_缩略图添加水印, Image::water(原文件路径,水印图片地址)

Image::water($uploadList[0][savepath] . m_ . $uploadList[0][savename], APP_PATH.Tpl/Public/Images/logo.jpg);

//图片名赋值给 字段image

$_POST[image] = $uploadList[0][savename];

}

$model = M(image);

//保存当前数据对象

$data[image]= $_POST[image];

$data[create_time] = NOW_TIME;

$list = $model->add($data);

if ($list !== false)

{

$this->success(上传图片成功!);

}

else

{

$this->error(上传图片失败!);

}

}

}

?>

上传成功生成两张缩略图

需要说明的是:

ThinkPHP里自带的图片上传类(UploadFile.class.php) 和图片模型类(Image.class.php),要完整版的ThinkPHP包才有。

没有的话需要在Lib里创建一个文件夹(ORG),然后去官网下载扩展包把这两个文件放到ORG文件夹中。

我的是第二种情况

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。