在php编程中,有关php上传图片的问题,随时会遇到。

[url=http://www.jbxue.com/article/6379.html]php上传图片[/url]的原理:首先判断文件类型是否为图片格式,若是则上传文件,然后重命名文件,接着把文件上传到指定目录,成功上传后输出上传图片的预览。

1、首先判断文件类型是否为图片类型用到的函数

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

图片类型就是“.”后面的字符(比如:一个文件名称为XXX.JPG 那么它的类型就是“.”后面的JPG)。
考虑[url=http://www.jbxue.com/article/6379.html]php上传图片时文件名可能过长的问题[/url],可以使用php 函数截取上传者文件名字的。写个获取文件类型的函数

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

2.若是则上传文件,然后重命名文件用到的函数
{
strtolower:把字符串的字母全部转换为小写字母.
in_array: 函数在数组中搜索给定的值。
implode:函数把数组元素组合为一个字符串
random:随机生成的数
$_FILES['userfile']['name']:上传文件名称
$uploaddir:自己定义的变量。比如在同一个文件夹里面,你想把上传的文件放到这个文件夹的FILE文件夹下,你可以这样定义$uploaddir="./file/";注意写法
}

会出现很多问题,第一先写一个能上传类型的数组。第二判断文件合法性。第三给文件重名。*
(这边判断文件大小就不写了)先定义允许上传文件的类型数组:$type=array("jpg","gif","bmp","jpeg","png");第二用一个IF。。else。。写一个判断文件合法性的控制流语句。

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

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

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

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

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

ok,php上传图片原理及实例介绍完毕。

php上传图片的原理分析相关推荐

  1. 【OkHttp】OkHttp 源码分析 ( 同步 / 异步 Request 请求执行原理分析 )

    OkHttp 系列文章目录 [OkHttp]OkHttp 简介 ( OkHttp 框架特性 | Http 版本简介 ) [OkHttp]Android 项目导入 OkHttp ( 配置依赖 | 配置 ...

  2. 百度识图原理分析 推测其发展方向…

    百度识图原理分析 推测其发展方向 2010年12月13日,百度推出相似图片搜索功能-百度识图(shitu.baidu.com),常规的图片搜索,是通过输入关键词的形式搜索到互联网上相关的图片资源,而百 ...

  3. java signature 性能_Java常见bean mapper的性能及原理分析

    背景 在分层的代码架构中,层与层之间的对象避免不了要做很多转换.赋值等操作,这些操作重复且繁琐,于是乎催生出很多工具来优雅,高效地完成这个操作,有BeanUtils.BeanCopier.Dozer. ...

  4. Select函数实现原理分析

    转载自 http://blog.chinaunix.net/uid-20643761-id-1594860.html select需要驱动程序的支持,驱动程序实现fops内的poll函数.select ...

  5. spring ioc原理分析

    spring ioc原理分析 spring ioc 的概念 简单工厂方法 spirng ioc实现原理 spring ioc的概念 ioc: 控制反转 将对象的创建由spring管理.比如,我们以前用 ...

  6. 一次 SQL 查询优化原理分析(900W+ 数据,从 17s 到 300ms)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:Muscleape jianshu.com/p/0768eb ...

  7. 原理分析_变色近视眼镜原理分析

    随着眼镜的发展,眼镜的外型变得越来越好看,并且眼镜的颜色也变得多姿多彩,让佩戴眼镜的你变得越来越时尚.变色近视眼镜就是由此产生的新型眼镜.变色镜可以随着阳光的强弱变换不同的色彩. 变色眼镜的原理分析 ...

  8. jieba分词_从语言模型原理分析如何jieba更细粒度的分词

    jieba分词是作中文分词常用的一种工具,之前也记录过源码及原理学习.但有的时候发现分词的结果并不是自己最想要的.比如分词"重庆邮电大学",使用精确模式+HMM分词结果是[&quo ...

  9. EJB调用原理分析 (飞茂EJB)

    EJB调用原理分析 EJB调用原理分析 作者:robbin (MSN:robbin_fan AT hotmail DOT com) 版权声明:本文严禁转载,如有转载请求,请和作者联系 一个远程对象至少 ...

最新文章

  1. [Android]开发摇一摇分歧表决器过程
  2. tensorboard使用_tensorboard查看训练曲线
  3. php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区
  4. C#中几种常用的集合的用法
  5. java时间比较大小_Go、Java 和 Rust 的比较:得出了挺多结论
  6. 网络动态服务器-2-传递数据给应用
  7. memchache的数据类型_memcache详解
  8. 无数老板做企业还在卖产品赚差价
  9. android编译make错误——javalib.jar invalid header field”、classes-full-debug.jar 错误 41 ...
  10. SharePoint开发错误—列表自定义表单出现“未将对象引用设置到对象的实例”
  11. 武汉市15区科技企业孵化器及众创空间补贴附武汉市科技企业孵化器和众创空间管理办法
  12. C语言程序设计基础笔记
  13. css常用样式大全集锦
  14. DH算法(密钥交换算法)
  15. python用于cad_使用Python实现AutoCAD自动化
  16. Python包导入时重命名
  17. 《成为乔布斯》读后感
  18. dim c语言,编程基础-C程序的组成
  19. unity-3d摄像头
  20. 当今安全领域面试的几大怪现状

热门文章

  1. 50句话悟透爱情婚姻的本质
  2. 使用Redis进行数据库缓存
  3. 使用el-calendar组件完成日历
  4. 高斯金字塔的构建步骤
  5. python static变量_python static变量
  6. 二维数组作为函数参数的调用
  7. uni-app项目 发布为安卓 app
  8. 结合Free to Earn和Play to Earn,Monsterra在GameFi领域的尝试
  9. 【增强学习在无人驾驶中的应用】
  10. win10 给C盘增加空间的方法【带软件diskgenius】