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实现验证码功能
Oct 09 PHP
php 变量未定义等错误的解决方法
Jan 12 PHP
详解PHP的Yii框架中的Controller控制器
Mar 29 PHP
CI框架扩展系统核心类的方法分析
May 23 PHP
简单谈谈PHP中的trait
Feb 25 PHP
php封装json通信接口详解及实例
Mar 07 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
Sep 16 PHP
PHP实现可添加水印与生成缩略图的图片处理工具类
Jan 16 PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 PHP
Laravel 框架控制器 Controller原理与用法实例分析
Apr 14 PHP
基于PHP实现生成随机水印图片
Dec 09 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函数)
2006/10/09 PHP
php中将时间差转换为字符串提示的实现代码
2011/08/08 PHP
PHP实现利用MySQL保存session的方法
2014/08/23 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
js日历功能对象
2012/01/12 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
快速查找数组中的某个元素并返回下标示例
2013/09/03 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
Nodejs进程管理模块forever详解
2014/06/01 NodeJs
jquery序列化方法实例分析
2015/06/10 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
jQuery和CSS仿京东仿淘宝列表导航菜单
2017/01/04 Javascript
浅谈js函数三种定义方式 &amp; 四种调用方式 &amp; 调用顺序
2017/02/19 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
BootStrap实现文件上传并带有进度条效果
2017/09/11 Javascript
webpack4 从零学习常用配置(小结)
2019/05/28 Javascript
Vue中使用wangeditor富文本编辑的问题
2021/02/07 Vue.js
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python库urllib与urllib2主要区别分析
2014/07/13 Python
Django开发中复选框用法示例
2018/03/20 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Python函数默认参数常见问题及解决方案
2020/03/26 Python
Python select及selectors模块概念用法详解
2020/06/22 Python
python中关于数据类型的学习笔记
2020/07/19 Python
医学院学生的自我评价分享
2013/11/19 职场文书
兼职业务员岗位职责
2014/01/01 职场文书
期终自我鉴定
2014/02/17 职场文书
关于分班的感言
2015/08/04 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
餐厅开业活动方案
2019/07/08 职场文书