学习PHP时,你可能会遇到PHP上传图片问题,这里将介绍PHP上传图片问题的解决方法,在这里拿出来和大家分享一下。今天我们就开始一起学习PHP上传图片。上传图片原理:首先判断文件类型是否为图片格式,若是则上传文件,然后重命名文件(一般都是避免上传文件重名,现在基本上都是以为时间来命名),接着把文件上传到指定目录,成功上传后输出上传图片的预览。

1.首先我们开始判断文件类型是否为图片类型用到的函数

  1. {
  2. strrchr:查找字符串在另一个字符串中最后一次出现的位置,并返回从该位置到字符串结尾的所有字符。
  3. substr: 取部份字符串。
  4. $HTTP_POST_FILES['file']['name']:获取当前上传的文件全称。
  5. }

图片类型就是“.”后面的字符(比如:一个文件名称为XXX.JPG 那么它的类型就是“.”后面的JPG)。 我们可以用PHP中的函数来截取上传者文件名字的。我们来写个获取文件类型的函数

  1. <?
  2. function type()
  3. {
  4. return substr(strrchr($HTTP_POST_FILES['file']['name'],'.'),1);
  5. }
  6. ?>

2.若是则上传文件,然后重命名文件用到的函数

  1. {
  2. strtolower:把字符串的字母全部转换为小写字母.
  3. in_array: 函数在数组中搜索给定的值。
  4. implode:函数把数组元素组合为一个字符串
  5. random:随机生成的数
  6. $_FILES['userfile']['name']:上传文件名称
  7. $uploaddir:自己定义的变量。比如在同一个文件夹里面,你想把上传的文件放到这个文件夹的FILE文件夹下,你可以这样定义$uploaddir="./file/";注意写法
  8. }
这边会出现很多问题,第一先写一个能上传类型的数组。第二判断文件合法性。第三给文件重名。*(这边判断文件大小就不写了)先定义允许上传文件的类型数组:$type=array("jpg","gif","bmp","jpeg","png");第二用一个IF。。else。。写一个判断文件合法性的控制流语句。

  1. if(!in_arry(strtolower(type()),$type))//如果不存在能上传的类型
  2. {
  3. $text=implode('.',$type);
  4. echo "您只能上传以下类型文件: ",$text,"<br>";
  5. }

下面就是给他们重新命名了,

  1. else
  2. {
  3. $filename=explode(".",$_FILES['userfile']['name']);//把上传的文件名以“.”好为准做一个数组。
  4. $time=date("m-d-H-i-s");//去当前上传的时间
  5. $filename[0]=$time;//取文件名t替换
  6. name=implode(".",$filename); //上传后的文件名
  7. $uploadfile=$uploaddir.$name;//上传后的文件名地址
  8. }

3.最后把文件上传到指定目录,成功上传后输出上传图片的预览用到的函数

  1. {
  2. move_uploaded_file:执行上传文件
  3. }
  4. if(move_uploaded_file($_FILES['userfile']['tmp_name'],$uploadfile))
  5. {
  6. echo "<center>您的文件已经上传完毕 上传图片预览: </center><br><center><img src='$uploadfile'></center>";
  7. echo"<br><center><a href='javascrīpt:history.go(-1)'>继续上传</a></center>";
  8. }
  9. else
  10. {
  11. echo"传输失败!";
  12. }

这样就OK 一个简单的上传图片的程序写完。假如你还想完善你的功能你可以自己添加!

最新文章

  1. java基础 常用组件
  2. jsp页面中引用其他页面的方法
  3. https://zeroc.com/index.html
  4. 用DropDownList实现的省市级三级联动
  5. C#常用方法集合
  6. Linq&amp;Lumda---LINQ to DataSet的DataTable操作
  7. Swift游戏实战-跑酷熊猫 07 平台的移动
  8. [转]-Dmaven.multiModuleProjectDirectory system propery is not set. 解决方案 适用于myeclipes 和 eclipes
  9. 关于在 loadView 中改变状态栏的可视性
  10. Wordnet 与 Hownet 比较
  11. ios开发之网络访问的数据类型
  12. iOS 简单总结:description方法\NSLog函数
  13. 笔记本分享无线Wifi
  14. BFC,IFC,GFC,FFC的定义及功能
  15. hdu1443(约瑟夫环游戏的原理 用链表过的)
  16. JSON的parse()方法
  17. SQL SERVER 变量的使用和样例
  18. http://codeforces.com/problemset/problem/594/A
  19. bzoj 1801: [Ahoi2009]chess 中国象棋
  20. Android开发学习必备的java知识

热门文章

  1. Kinect开发随笔①——红外扫描仪(Kinect 数据源)
  2. (转)Eclipse和MyEclipse安装和使用git(egit)图解笔记
  3. list集合的排序Comparator和Collections.sort
  4. ORACLE告警日志文件
  5. .net WebClient发送请求实例:
  6. fp = fopen(s, &quot;at&quot;) 中at 是啥意思,a 是append 追加的意思
  7. OC内存管理(MRC)
  8. Javascript正则表达式笔记
  9. ERP员工入登记查询(六)
  10. (转)白话经典算法系列之八 MoreWindows白话经典算法之七大排序总结篇
  11. Swift学习的新工具---REPL
  12. JS笔记 入门第四
  13. mybatis+spring+c3p0+maven+ehcache
  14. windows CMD常用命令
  15. pycharm的断点调试【转自https://blog.csdn.net/weixin_39198406/article/details/78873120】
  16. sql语句,加引号和不加引号的区别
  17. 日常英语---四、vis.js是什么
  18. python3练习-装饰器
  19. jquery插件的几种写法
  20. BabelMap 10.0.0.5 汉化版已经发布