ThinkPHP示例中心添加图片上传示例

ThinkPHP新添加了3.1版本的图片上传示例。

新版的上传类内部做了一些调整,实例化的参数也有所改变,目的是为了更加明确化。

ThinkPHP示例之图片上传,包括图片上传、数据库保存、缩略图生成以及图片水印功能演示。
首先需要下载框架核心,然后把示例解压到Web根目录下面,并修改入口文件中的框架入口文件的位置。
导入示例目录下面的data.sql文件到你的数据库,或者执行SQL:

CREATE&">nbsp;TABLE IF NOT EXISTS `think_photo` (     `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; 

修改App/Conf/config.php 中的数据库配置信息,访问

http://localhost/file/

就会显示:

选择一个图片上传成功后,页面会出现:

生成的大图缩略图右下角带有水印图片。
示例中上传操作的关键方法是IndexAction类的_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->thumbMaxW
idth = '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');       $_POST['image'] = $uploadList[0]['savename']; } 

由于独立演示的方便,示例中的文件上传类和图片类放置于项目类库目录下面的ORG目录,实际应用中,这两个类库应该在扩展目录中,根据实际情况调整import方法即可。
在输出图片的时候,为了方便调整,我们定义了模板输出替换:

'TMPL_PARSE_STRING' =>
array(     '/Uploads'=>__ROOT__.'/Uploads', ),

所以,我们只需要在模板文件中写上

<img src="/Uploads/m_{$data.image}" />

输出的时候会自动把/Uploads替换成__ROOT__.'/Uploads',也就是示例目录下面的Uploads目录。

时间: 2024-09-25 06:46:21

ThinkPHP示例中心添加图片上传示例的相关文章

PHP+Ajax无刷新带进度条图片上传示例

项目需求:1.PHP+Ajax无刷新带进度条图片上传,2.带进度条.所需插件:jquery.js,jquery.form.js. 最近在做一个手机web项目,需要用到Ajax上传功图片能,项目要求PHP无刷新上传图片,并且要带进度条,下面就来讲一下我的实现方法,先看效果图 本示例需要使用的是jquery.js,jquery.form.js,demo里面包含有,你可以在文章下方进行下载. 第一步,建立前端页面index.html 此段是前端展示内容,这里需要说明的是由于input:file标签显示

android自定义ImageView仿图片上传示例

看下效果图 主要看下自定义view 代码 public class ProcessImageView extends ImageView{ private Context context; private Paint paint; private LogUtil log=LogUtil.getInstance(); int progress = 0; private boolean flag; public ProcessImageView(Context context) { super(co

android文件上传示例分享(android图片上传)_Android

主要思路是调用系统文件管理器或者其他媒体采集资源来获取要上传的文件,然后将文件的上传进度实时展示到进度条中. 主Activity 复制代码 代码如下: package com.guotop.elearn.activity.app.yunpan.activity; import java.io.File;import java.io.FileNotFoundException;import java.io.IOException; import android.app.Activity;impor

android文件上传示例分享(android图片上传)

主要思路是调用系统文件管理器或者其他媒体采集资源来获取要上传的文件,然后将文件的上传进度实时展示到进度条中. 主Activity 复制代码 代码如下:package com.guotop.elearn.activity.app.yunpan.activity; import java.io.File;import java.io.FileNotFoundException;import java.io.IOException; import android.app.Activity;import

ASP程序实现图片上传的原理分析及示例

程序|上传|示例   用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在自己的社区里面实现类似网易虚拟社区提供的"每日一星"的功能,就要提供给网友上传照片的功能.上传图片文件到服务器可以使用各种免费的文件上传组件,使用起来功能虽然很强大,但是由于很多情况下,我们只能使用免费的支持ASP的空间或者租用别人的虚拟空间,对于第一种情况,我们根本就没有可能来使用文件上传组件:至于第二种情况,我们也要付出不

ie8本地图片上传预览示例代码

 ie8本地图片上传预览出现问题是因为限制浏览器造访本地文件,所以用到滤镜和div,下面有个不错的示例,希望对大家有所帮助 代码如下: imgpath= getRealPath(fileId):    document.getElementById("divSBTP").style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled ='true',sizingMethod='scale',sr

ThinkPHP示例中心添加关联操作示例

ThinkPHP示例中心添加关联操作示例3.1版本的关联操作示例,包括关联的定义.写入.更新和删除操作的演示.首先,首先需要下载框架核心,然后把示例解压到Web根目录下面,并修改入口文件中的框架入口文件的位置.然后导入目录下面的data.sql到你的数据库,并配置项目配置文件中的数据库连接信息,然后访问: http://localhost/relation/ 会出现:

一个伪ajax图片上传代码实现示例

 这篇文章主要介绍了自己写的一个伪ajax图片上传实现代码,需要的朋友可以参考下  代码如下: <?php  if($_FILES){  ?>  <script>  window.parent.ajaxUploadPicture.uploadCallback('http://img0.bdstatic.com/img/image/5099213b07eca8065380ce 7f75e95dda144ad348269.jpg');  </script>  <?ph

ie8本地图片上传预览示例代码_javascript技巧

复制代码 代码如下: imgpath= getRealPath(fileId): document.getElementById("divSBTP").style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\""+ imgpath + "\")";//使用滤镜效果 func