在项目其中。我们有的时候需要上传图片的功能。简单的从面相过程的方法是相对较为复杂的,要一步一步的来。假设用框架的话,相对就简单了很多,主要就是方法以及每个变量所代表的意义,然后就是一些注意的地方了。

首先,从视图页面说起,要先做好文件的上传表单控件,这里我就出现了一个错误,没有加上文件的特有属性而导致控制器取不到文件。例如以下所看到的一个简单的界面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>附件上传</title>
</head>
<body>
<form action="{$smarty.const.__SELF__}" enctype="multipart/form-data" method="post">
上传文件(图片)<input type="file" name="file_1"><br/>
<input type="submit" value="上传图片">
<img src="{$img_url}">
</form>
</body>
</html>

在接下来,我们选择了图片或者其它的文件,点击上传,就必需要控制器进行接收,直接有常量$_files检查文件的选择是否存在,至于这个对象里面都有什么元素,可以用print_r的方法进行输出查看。接下来就是实例化文件上传功能的upload类(这之前一定要配置类),用upload或者uploadOne(一个文件)上传文件。可是我绝得上传完不是目的。关键是要使用它。可以实现永久使用的除了文件就是数据库,由于图片本身就是文件,并且从数据安全性的方面来考虑,应当优先使用数据库,可是我们不可能把整个图片数据都保存在数据库。这里就有一个办法,也可以解决非常多难以解决的问题,比方数据分配等。这种话就简单明了多了,把图片的url保存在数据库。这样数据量非常小,资源耗费非常少就行解决这个问题。可是。即便数据量小。我还是有一些低估了,我把数据设置成了64个字节,可是这測试的时候有数据溢出,由于文件名是经过MD5运算过的所以,会变长一些,所以我把字符长度设置成了128位。这样问题就得到了解决,不多说了。还是直接上代码把:

 if(!empty($_POST)){
if(!empty($_FILES)){
// show_bug($_FILES);
$config=array(
'rootPath' => './Public/', //保存根路径
'savePath' => 'Upload/', //保存路径
);
$upload=new \Think\Upload($config);
$z=$upload->uploadOne($_FILES['file_1']);
if($z){
$info=D('pic');
//取出文件路径以及名称
$filename=IMG_UPLOAD_URL.$z['savepath'].$z['savename'];
// echo $filename;
$info->name=$filename;
// $info_save=$info->save();
$info_save=$info->add();
$res=$info->select();
if($info_save>=0){
$this->assign('img_url',$res[0]['name']);
// show_bug($info);
echo $res[0]['name'];
$this->display();
}
// $this->display();
}else{
echo "No";
show_bug($upload->getError());
}
}
}else{
$this->display();
} }

ThinkPHP之文件上传的更多相关文章

  1. ThinkPHP 5 文件上传及指定宽高生成缩略图公共方法

    这个是非常常用的案例,ThinkPHP 5 文件上传及指定宽高生成缩略图公共方法/** * 单文件上传 * name:表单上传文件的名字 * ext: 文件允许的后缀,字符串形式 * path:文件保 ...

  2. thinkphp实现文件上传

    文件上传详细讲解 http://www.thinkphp.cn/info/194.html 上传根目录不存在问题解决方法 http://www.thinkphp.cn/topic/10779.html

  3. ThinkPHP3.2.3多文件上传,文件丢失问题的解决

    描述 thinkphp多文件上传时,有些时候会出现文件丢失的情况.比如上传多个图片,最终只上传了一个图片.本地测试的时候是正常的,但上传到服务器上就会出现丢失文件这种情况. 原因 查看tp上传类(Th ...

  4. THINKPHP源码学习--------文件上传类

    TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...

  5. Thinkphp 验证码、文件上传

    一.验证码 验证码参数 例题:登录时验证下验证码 LoginController.class.php <?php namespace Home\Controller; use Think\Con ...

  6. ThinkPHP文件上传类

    TP框架自带文件上传类使用: 类文件在ThinkPHP/Library/Think/默认在目录下 public function upload(){ $upload = new \Think\Uplo ...

  7. Thinkphp拖拽上传文件-使用webuploader插件(自己改动了一些地方)——分片上传

    html页面: <!DOCTYPE html> <html class="js cssanimations"> <head> <meta  ...

  8. ThinkPHP 文件上传到阿里云OSS上(干货)

    参考:http://www.thinkphp.cn/extend/789.html 1.前往阿里云github下载SDK包:https://github.com/aliyun/aliyun-oss-p ...

  9. thinkphp文件上传以及图片处理

    文件上传 上传表单 在ThinkPHP中使用上传功能无需进行特别处理.例如,下面是一个带有附件上传的表单提交: <form action="__URL__/upload" e ...

随机推荐

  1. Lua脚本语言快速入门手册

    学了两天Lua语言,感叹其短小精悍,上手极快,语法还很舒服,不错!整理下学习过程中经常用到的基础知识,共勉! Lua用法简述 Lua语言是在1993年由巴西一个大学研究小组发明,其设计目标是作为嵌入式 ...

  2. git使用(二)----创建版本库

    创建版本库(操作都是在linux环境下) 什么是版本库呢?版本库又名仓库,英文名repository,其实就是一个目录,可以进行增删查改 创建一个目录,这里在根目录下创建一个git_home目录mkd ...

  3. IIS启用GZip压缩的详细教程(图文)

    本文将详细介绍如何在IIS启用GZip压缩,同时解决可能遇到的一些问题 IIS启用GZip压缩,是提高网站速度和减轻服务器负载的一个优化手段和方法,经测试,网站启用GZip压缩后,速度快了3倍!而配置 ...

  4. 通过GUID生成可持久化的PID

    byte[] buffer = Guid.NewGuid().ToByteArray(); ); GUID是微软针对UUID的实现,直接生成会大于long类型的最大长度. 但只要转换一下即可

  5. 基于FPGA的异步FIFO验证

    现在开始对上一篇博文介绍的异步FIFO进行功能验证,上一篇博文地址:http://blog.chinaaet.com/crazybird/p/5100000872 .对异步FIFO验证的平台如图1所示 ...

  6. 《ZedBoard各种资料网址备份记录》

    转载来自于:http://http//www.eefocus.com/crazybingo/blog/2013-02/289101_ab4c8.html 1. Xilinx FPGA相关连接 1) X ...

  7. 【Android】6.2 AlertDialog(警告对话框)

    分类:C#.Android.VS2015: 创建日期:2016-02-08 一.简介 AlertDialog也是Android系统当中常用的对话框之一. 在一个AlertDialog中,可以有一个Bu ...

  8. 【Android】5.7 图片库(Galery)

    分类:C#.Android.VS2015: 创建日期:2016-02-07 一.简介 图库(也叫画廊)是一个布局小部件,用于在可水平滚动的列表中显示每一副图片,当前所选的图片将置于视图的中心. 注意: ...

  9. Base64转码和解码的帮助类

    /** * 将字符串进行Base64编码 * * @param s 被编码的字符串 * @return 编码后的字符串 */ public static String encoderBASE64(St ...

  10. python(25):Unicode 转成中文

    代码转换如下: if __name__ == "__main__": data = "\u5c71\u5cb3\u548c\u4e00\u5207\u4e18\u9675 ...