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下过滤html代码的函数 提高程序安全性
Mar 02 PHP
由php的call_user_func传reference引发的思考
Jul 23 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
在PHP中利用wsdl创建标准webservice的实现代码
Dec 07 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP实现ftp上传文件示例
Aug 21 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
php快速查找数据库中恶意代码的方法
Apr 01 PHP
PHP下的浮点运算不准的解决方法
Oct 27 PHP
php获得文件夹下所有文件的递归算法的简单实例
Nov 01 PHP
YII2自动登录Cookie总是失效的解决方法
Jun 28 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 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实现的连贯操作、链式操作实例
2014/07/08 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
PHP实现文字写入图片功能
2019/02/18 PHP
html下载本地
2006/06/19 Javascript
判断页面是关闭还是刷新的js代码
2007/01/28 Javascript
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
深入探究node之Transform
2017/07/20 Javascript
谈谈vue中mixin的一点理解
2017/12/12 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
JavaScript中判断为整数的多种方式及保留两位小数的方法
2019/09/09 Javascript
layui的select联动实现代码
2019/09/28 Javascript
详解vue 组件
2020/06/11 Javascript
js实现金山打字通小游戏
2020/07/24 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python使用循环打印所有三位数水仙花数的实例
2018/11/13 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
新秀丽拉杆箱美国官方网站:Samsonite美国
2016/07/25 全球购物
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
AE美国鹰日本官方网站: American Eagle Outfitters
2016/12/10 全球购物
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
Miller Harris官网:英国小众香水品牌
2020/09/24 全球购物
办公室内勤工作职责
2013/12/11 职场文书
电厂厂长岗位职责
2014/01/02 职场文书
八一演出活动方案
2014/02/03 职场文书
大学生见习期满自我鉴定
2014/09/13 职场文书
医德医风自我评价
2014/09/19 职场文书
团结主题班会
2015/08/13 职场文书
MySQL 原理与优化之原数据锁的应用
2022/08/14 MySQL