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 结果集的分页实现代码
Mar 10 PHP
PHP 递归效率分析
Nov 24 PHP
解析百度搜索结果link?url=参数分析 (全)
Oct 09 PHP
php列出一个目录下的所有文件的代码
Oct 09 PHP
ThinkPHP3.1数据CURD操作快速入门
Jun 19 PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 PHP
PHP高手需要要掌握的知识点
Aug 21 PHP
教你如何开启shopnc b2b2c 伪静态
Oct 21 PHP
Yii基于数组和对象的Model查询技巧实例详解
Dec 28 PHP
PHP进制转换实例分析(2,8,16,36,64进制至10进制相互转换)
Feb 04 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
微信公众号开发之获取位置信息php代码
Jun 13 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
php强制下载类型的实现代码
2011/04/21 PHP
PHP 实现的将图片转换为TXT
2015/10/21 PHP
PHP children()函数讲解
2019/02/03 PHP
PHP递归算法的简单实例
2019/02/28 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
从零开始学习jQuery (四) jQuery中操作元素的属性与样式
2011/02/23 Javascript
多次注册事件会导致一个事件被触发多次的解决方法
2013/08/12 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
详解Vue.js 2.0 如何使用axios
2017/04/21 Javascript
JavaScript实现换肤功能
2017/09/15 Javascript
JS分页的实现(同步与异步)
2017/09/16 Javascript
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
微信小程序实现星星评分效果
2020/11/01 Javascript
vue+Element-ui前端实现分页效果
2020/11/15 Javascript
python读取word文档的方法
2015/05/09 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python使用自带的ConfigParser模块读写ini配置文件
2016/06/26 Python
Python基于whois模块简单识别网站域名及所有者的方法
2018/04/23 Python
python生成多个只含0,1元素的随机数组或列表的实例
2018/11/12 Python
Python3数字求和的实例
2019/02/19 Python
Python基础学习之类与实例基本用法与注意事项详解
2019/06/17 Python
Python转换itertools.chain对象为数组的方法
2020/02/07 Python
Numpy ndarray 多维数组对象的使用
2021/02/10 Python
计算机开发个人求职信范文
2013/09/26 职场文书
护理专业学生的求职信范文
2013/12/11 职场文书
大学生党课思想汇报
2013/12/29 职场文书
五年级科学教学反思
2014/02/05 职场文书
检举信的格式及范文
2014/04/04 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书
Python游戏开发实例之graphics实现AI五子棋
2021/11/01 Python
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python