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
PHP5中的this,self和parent关键字详解教程
Mar 19 PHP
php数组函数序列 之array_count_values() 统计数组中所有值出现的次数函数
Oct 29 PHP
php使用百度翻译api示例分享
Jan 31 PHP
PHP实现生成唯一编号(36进制的不重复编号)
Jul 01 PHP
PHP抽奖算法程序代码分享
Oct 08 PHP
PHP文件上传之多文件上传的实现思路
Jan 27 PHP
深入解析PHP的Yii框架中的缓存功能
Mar 29 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
Jun 29 PHP
eclipse php wamp配置教程
Jun 30 PHP
php无法连接mysql数据库的正确解决方法
Jul 01 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
Jun 16 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 curl模拟post提交数据示例
2013/12/31 PHP
php上传图片并压缩的实现方法
2015/12/22 PHP
php 解析xml 的四种方法详细介绍
2016/10/26 PHP
Zend Framework分发器用法示例
2016/12/11 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
jquery遍历checkbox介绍
2014/02/21 Javascript
JS获取文件大小方法小结
2015/12/08 Javascript
JS中正则表达式只有3种匹配模式(没有单行模式)详解
2016/07/28 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
浅谈Express.js解析Post数据类型的正确姿势
2019/05/30 Javascript
react koa rematch 如何打造一套服务端渲染架子
2019/06/26 Javascript
vue实现手机号码的校验实例代码(防抖函数的应用场景)
2019/09/05 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
[42:52]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python django事务transaction源码分析详解
2017/03/17 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
解决Django Static内容不能加载显示的问题
2019/07/28 Python
解决pytorch多GPU训练保存的模型,在单GPU环境下加载出错问题
2020/06/23 Python
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
六道php面试题附答案
2014/06/05 面试题
计算机大学生的自我评价
2013/10/15 职场文书
应届毕业生就业自荐信
2013/10/26 职场文书
2014年健康教育实施方案
2014/02/17 职场文书
新品发布会主持词
2014/04/02 职场文书
仓库文员岗位职责
2014/04/06 职场文书
2014年学生管理工作总结
2014/12/20 职场文书
公司员工体检通知
2015/04/21 职场文书
如何判断微信付款码和支付宝付款码
2021/04/01 PHP
MySQL外键约束(Foreign Key)案例详解
2022/06/28 MySQL