thinkphp达到UploadFile.class.php图片上传功能
1.我们首先须要创建一个表
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路径)
<?php
return array(
'URL_MODEL' => 2, // 假设你的环境不支持PATHINFO 请设置为3
'DB_TYPE' => 'mysql',
'DB_HOST' => 'localhost',
'DB_NAME' => 'thinkphp',
'DB_USER' => 'root',
'DB_PWD' => '',
'DB_PORT' => '3306',
'DB_PREFIX' => 'tp_',
'SHOW_PAGE_TRACE' =>true, //显示页面调试明细
'TMPL_PARSE_STRING' => array( // 地址替换,用_UPLOAD_文件夹 取代 根文件夹下的Upload文件夹
'__UPLOAD__' => __ROOT__.'/Uploads',
),
);
?>
3.加入一个Image模块(名字能够随便取)
<?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)
<!DOCTYPE html PUBLIC "-//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">
#img{height:22px; border:#000 2px solid}
#button{height:30px; width:100px;}
</style>
</head>
<body>
<div class="result" >上传同意文件类型:gif png jpg 图像文件,并生成2张缩略图,当中大图带水印,生成后会删除原图。</div><br>
<notempty name="data"><img src="__UPLOAD__/m_{$data.image}" /> <img src="__UPLOAD__/s_{$data.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.选择图片,点击上传button后,会跳到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.png');
//图片名赋值给 字段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目录中。
我是另一种情况
版权声明:本文博主原创文章,博客,未经同意,不得转载。
thinkphp达到UploadFile.class.php图片上传功能的更多相关文章
- H5 利用vue实现图片上传功能。
H5的上传图片如何实现呢? 以下是我用vue实现的图片上传功能,仅供参考. <!DOCTYPE html> <html> <head> <meta chars ...
- 前端丨如何使用 tcb-js-sdk 实现图片上传功能
前言 tcb-js-sdk 让开发者可以在网页端使用 JavaScript 代码服务访问云开发的服务,以轻松构建自己的公众号页面或者独立的网站等 Web 服务.本文将以实现图片上传功能为例,介绍 tc ...
- Spring+SpringMVC+MyBatis+easyUI整合优化篇(七)图片上传功能
日常啰嗦 前一篇文章<Spring+SpringMVC+MyBatis+easyUI整合优化篇(六)easyUI与富文本编辑器UEditor整合>讲了富文本编辑器UEditor的整合与使用 ...
- PHP语言学习之php做图片上传功能
本文主要向大家介绍了PHP语言学习之php做图片上传功能,通过具体的内容向大家展示,希望对大家学习php语言有所帮助. 今天来做一个图片上传功能的插件,首先做一个html文件:text.php < ...
- [Ting's笔记Day8]活用套件carrierwave gem:(3)Deploy图片上传功能到Heroku网站
前情提要: 身为Ruby新手村民,创造稳定且持续的学习步调很重要,我用的方法就是一周在IT邦写三篇笔记,希望藉由把笔记和遇到的bug记录下来的过程,能帮助到未来想用Ruby on Rails架站的新手 ...
- 给DEDECMS广告管理中增加图片上传功能
dedecms的广告管理功能稍微有点次,本文就是在dedecms广告管理原有的基础上增加广告图片上传功能. 安装方法,对应自己的dedecms版本下载对应的编码然后解压把里面的文件放在后台目录覆盖即可 ...
- vue 图片上传功能
这次做了vue页面的图片上传功能,不带裁剪功能的! 首先是html代码,在input框上添加change事件,如下: <ul class="clearfix"> ...
- thinkphp微信开发之jssdk图片上传并下载到本地服务器
public function test2(){ $Weixin = new \Weixin\Controller\BaseController(); $this->assign('signPa ...
- Thinkphp整合阿里云OSS图片上传实例
Thinkphp3.2整合阿里云OSS图片上传实例,图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了 首先引入阿里云OSS类库 < ...
随机推荐
- spring-security3.2.5实现中国式安全管理(转)
最近公司要做开发平台,对安全要求比较高:SPRING SECURTIY框架刚好对所有安全问题都有涉及,框架的作者最近还做了spring-session项目实现分布式会话管理,还有他的另一个开源项目sp ...
- Spark实践的阶段性总结
写这篇小总结是因为前段时间是自己业余时间对Spark相关进行了些探索,接下来可能有别的同事一起加入,且会去借用一些别的服务器资源,希望可以借此理下思路. 实践Spark的原因 在之前Spark简介及安 ...
- Servlet:通过初始参数实现权限访问某个文件、页面
目录结构 src 目录下com.xieyuan包MyServlet.java文件(Servlet文件) package com.xieyuan; import java.awt.Color; impo ...
- python实现人人网用户数据爬取及简单分析
这是之前做的一个小项目.这几天刚好整理了一些相关资料,顺便就在这里做一个梳理啦~ 简单来说这个项目实现了,登录人人网并爬取用户数据.并对用户数据进行分析挖掘,终于效果例如以下:1.存储人人网用户数据( ...
- CCLuaObjcBridge调Objective-C方法传索引数组报invalid key to 'next'错调试
CCLuaObjcBridge是cocos2d-x系列引擎与Objective-C进行交互的"桥梁",老廖的quick-cocos2d-x在其framework进行了简单了封装,封 ...
- SE 2014年4月3日
一 OSPF协议都支持哪些特殊区域?每种特殊区域都有什么特点. OSPF协议支持的特殊区域主要有stub区域.totally stub区域以及nssa区域,其中stub区域一般出现在末梢网络,即它的 ...
- Oracle 数据迁移(从Oracle11G迁移到更高的版本号Oracle10G低版本号)
1.数据库状况 生产环境是11G,linux系统,測试环境是10G,windows系统,须要从生产环境导出一个用户下全部的数据,导入測试环境中. 由于数据量比較小,准备採用EXP和IMP工具来做 ...
- Android-IA Power Manager (S3)
Sleep and wake up
- Java算法分析1—————寻找数组同样元素
算法的两个评測指标:执行时间和内存消耗 要么用时间换空间,要么用空间换时间 寻找数组同样元素測试一: 0~99共100个元素各不同样,新增加一个0~99的元素不明白位置 从101个元素数组中找出与0~ ...
- Linux C语言写的超级简单port扫描器
这个本来曾经也写过的,今天无聊复习下 再写一遍.简单的一塌糊涂,写的不咋地大家见谅哦!有空再加强 嘿嘿! #include <stdio.h> #include <stdlib.h& ...