php实现文件上传及头像预览功能


Posted in PHP onJanuary 15, 2017

php文件上传原理是通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php程序将文件保存在体统中。

html代码:

<form action="shangchuan.php" method="post" enctype="multipart/form-data">
 <input type="file" name="file" />
 <input type="submit" value="上传" />
</form>

后台处理界面(shangchuan.php):

有以下几点需要注意

1.控制上传文件的类型
2.控制上传文件的大小
3.防止文件名重复
修改保存的文件名
用户名+时间戳+随机数+文件名
流水号

使用文件夹要提前建好路径。

4.保存文件

//判断文件上传是否出错
if($_FILES["file"]["error"])
{
 echo $_FILES["file"]["error"];
}
else
{
 //控制上传文件的类型,大小
 if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png") && $_FILES["file"]["size"]<1024000)
 {
  //找到文件存放的位置
  $filename = "./file/".date("YmdHis").$_FILES["file"]["name"];
   
  //转换编码格式
  $filename = iconv("UTF-8","gb2312",$filename);
   
  //判断文件是否存在
  if(file_exists($filename))
  {
   echo "该文件已存在!";
  }
  else
  {
   //保存文件
   move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
  }
 }
 else
 {
  echo "文件类型不正确!";
 }
}

点击上传后文件就保存在系统的指定路径下。

php实现文件上传及头像预览功能

保存后按照指定方法重命名文件名:

php实现文件上传及头像预览功能

头像上传预览

原理:在html界面做一个头像大小的div,设置上传头像的背景,在div里面做一个上传文件的input,透明度设置为0.

这样,点击这个div就可以跟上传的效果相同。

<title>无标题文档</title>
<style type="text/css">
#yl{ width:200px; height:300px; background-image:url(img/11.png); background-size:200px 300px;}
#file{ width:200px; height:300px; float:left; opacity:0;}
</style>
</head>
 
<body>
 
<form id="sc" action="chuli.php" method="post" enctype="multipart/form-data" target="shangchuan">
  
 <input type="hidden" name="tp" value="" id="tp" />
  
 <div id="yl">
  <input type="file" name="file" id="file" onchange="document.getElementById('sc').submit()" />
 </div>
  
  
  
</form>
 
<iframe style="display:none" name="shangchuan" id="shangchuan">
</iframe>
 
 
</body>
 
<script type="text/javascript">
 
//回调函数,调用该方法传一个文件路径,该变背景图
function showimg(url)
{
 var div = document.getElementById("yl");
 div.style.backgroundImage = "url("+url+")";
  
 document.getElementById("tp").value = url;
}
 
</script>
 
</html>

php处理界面(chuli.php):

<?php
 
if($_FILES["file"]["error"])
{
 echo $_FILES["file"]["error"];
}
else
{
 if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png")&& $_FILES["file"]["size"]<1024000)
 {
  $fname = "./img/".date("YmdHis").$_FILES["file"]["name"]; 
   
  $filename = iconv("UTF-8","gb2312",$fname);
   
  if(file_exists($filename))
  {
   echo "<script>alert('该文件已存在!');</script>";
  }
  else
  {
   move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
    
   unlink($_POST["tp"]);
    
   echo "<script>parent.showimg('{$fname}');</script>";
  }
   
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php文件上传表单摘自drupal的代码
Feb 15 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
php二维数组排序与默认自然排序的方法介绍
Apr 27 PHP
php全角字符转换为半角函数
Feb 07 PHP
yii上传文件或图片实例
Apr 01 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
PHP链表操作简单示例
Oct 15 PHP
php指定长度分割字符串str_split函数用法示例
Jan 30 PHP
PHP中的正则表达式实例详解
Apr 25 PHP
PHP封装的完整分页类示例
Aug 21 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
详解Go与PHP的语法对比
May 29 PHP
给大家分享几个常用的PHP函数
Jan 15 #PHP
详解Yii实现分页的两种方法
Jan 14 #PHP
PHP微信分享开发详解
Jan 14 #PHP
常用PHP封装分页工具类
Jan 14 #PHP
详解php用curl调用接口方法,get和post两种方式
Jan 13 #PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 #PHP
php 解决扫描二维码下载跳转问题
Jan 13 #PHP
You might like
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
如何让CI框架支持service层
2014/10/29 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
juqery 学习之三 选择器 可见性 元素属性
2010/11/25 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
js返回上一页并刷新的多种实现方法
2014/02/26 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
Javascript中实现trim()函数的两种方法
2015/02/04 Javascript
javascript实现画不相交的圆
2015/04/07 Javascript
微信小程序开发一键登录 获取session_key和openid实例
2016/11/23 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
H5+C3+JS实现双人对战五子棋游戏(UI篇)
2020/05/28 Javascript
4个顶级JavaScript高级文本编辑器
2018/10/10 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
使用vue引入maptalks地图及聚合效果的实现
2020/08/10 Javascript
Python编程中的反模式实例分析
2014/12/08 Python
python 使用get_argument获取url query参数
2017/04/28 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
利用TensorFlow训练简单的二分类神经网络模型的方法
2018/03/05 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
python修改字典键(key)的方法
2019/08/05 Python
Emporio Armani腕表天猫官方旗舰店:乔治·阿玛尼为年轻人设计的副线品牌
2017/07/02 全球购物
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
北欧最好的童装网上商店:Babyshop
2019/09/15 全球购物
临床医学专业个人的自我评价
2013/09/27 职场文书
优秀班集体申报材料
2014/12/25 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis
python游戏开发Pygame框架
2022/04/22 Python