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 相关文章推荐
多重?l件?合查?(一)
Oct 09 PHP
PHP print类函数使用总结
Jun 25 PHP
PHP中使用CURL伪造来路抓取页面或文件
May 04 PHP
php获取文件大小的方法
Feb 26 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
Aug 21 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
PHP6新特性分析
Mar 03 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
Laravel 实现密码重置功能
Feb 23 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
Mar 12 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
Mar 18 PHP
php字符串截取函数mb_substr用法实例分析
Jun 25 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 echo 输出字符串函数详解
2010/05/13 PHP
PHP中文件缓存转内存缓存的方法
2011/12/06 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php时间计算相关问题小结
2016/05/09 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
js实现回放拖拽轨迹从过程上进行分析
2014/06/26 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
浅谈javascript 归并方法
2015/01/21 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
2015/10/19 Javascript
javascript实现数组去重的多种方法
2016/03/14 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
js实现颜色阶梯渐变效果(Gradient算法)
2017/03/21 Javascript
jQuery使用bind动态绑定事件无效的处理方法
2018/12/11 jQuery
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
Python中类的继承代码实例
2014/10/28 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
使用beaker让Facebook的Bottle框架支持session功能
2015/04/23 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
python实现各进制转换的总结大全
2017/06/18 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
Selenium常见异常解析及解决方案示范
2020/04/10 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
Groupon荷兰官方网站:高达70%的折扣
2019/11/01 全球购物
事业单位公务员的职业生涯规划
2014/01/15 职场文书
鲜果饮品店创业计划书
2014/01/21 职场文书
大家检讨书5000字
2014/02/03 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
死者家属慰问信
2015/03/24 职场文书
教师节班会开场白
2015/06/01 职场文书
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
Java 多线程协作作业之信号同步
2022/05/11 Java/Android