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
linux php mysql数据库备份实现代码
Mar 10 PHP
PHP 变量定义和变量替换的方法
Jul 30 PHP
Windows下部署Apache+PHP+MySQL运行环境实战
Aug 31 PHP
使用php判断浏览器的类型和语言的函数代码
Feb 28 PHP
PHP连接MySQL数据的操作要点
Mar 20 PHP
PHP递归实现层级树状展开
Apr 01 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
一个非常实用的php文件上传类
Jul 04 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 PHP
php微信公众号开发之欢迎老朋友
Oct 20 PHP
解决laravel上传图片之后,目录有图片,但是访问不到(404)的问题
Oct 14 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
Netflix将与CLAMP、乙一以及冲方丁等6名知名制作人合伙展开原创动画计划!
2020/03/06 日漫
Php做的端口嗅探器--可以指定网站和端口
2006/10/09 PHP
php 正则匹配函数体
2009/08/25 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
java解析json方法总结
2019/05/16 PHP
jquery 表单取值常用代码
2009/12/22 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
读jQuery之十一 添加事件核心方法
2011/07/31 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
2012/05/03 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
js完美解决IE6不支持position:fixed的bug
2015/04/24 Javascript
jquery验证邮箱格式并显示提交按钮
2015/11/07 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
jquery中的常见问题及快速解决方法小结
2016/06/14 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
JS继承之借用构造函数继承和组合继承
2016/09/07 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
Angular实现预加载延迟模块的示例
2017/10/12 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
Python文件与文件夹常见基本操作总结
2016/09/19 Python
用Python登录好友QQ空间点赞的示例代码
2017/11/04 Python
Python利用itchat对微信中好友数据实现简单分析的方法
2017/11/21 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
python 编写简单网页服务器的实例
2018/06/01 Python
python使用建议与技巧分享(二)
2020/08/17 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
质检员的岗位职责
2013/11/15 职场文书
小学数学教研活动总结
2014/07/01 职场文书
九年级数学教学反思
2016/02/17 职场文书
实体类或对象序列化时,忽略为空属性的操作
2021/06/30 Java/Android
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python