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学习资料汇总与网址
Mar 16 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 PHP
用php的ob_start来生成静态页面的方法分析
Mar 09 PHP
PHP字符串函数系列之nl2br(),在字符串中的每个新行 (\n) 之前插入 HTML 换行符br
Nov 10 PHP
使用PHPMailer实现邮件发送代码分享
Oct 23 PHP
php采用curl实现伪造IP来源的方法
Nov 21 PHP
php实现读取内存顺序号
Mar 29 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
php读取本地json文件的实例
Mar 07 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
Jun 06 PHP
如何使用php生成zip压缩包
Apr 21 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加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php实现的统计字数函数定义与使用示例
2017/07/26 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
javascript 对象定义方法 简单易学
2009/03/22 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
JS获取当前日期时间并定时刷新示例
2021/03/04 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
HTML的select控件美化
2017/03/27 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
javascript中关于类型判断的一些疑惑小结
2018/10/14 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
JS实现判断数组是否包含某个元素示例
2019/05/24 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
python中global用法实例分析
2015/04/30 Python
pyqt5自定义信号实例解析
2018/01/31 Python
详解Python3.6的py文件打包生成exe
2018/07/13 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
canvas因为图片资源不在同一域名下而导致的跨域污染画布的解决办法
2019/01/18 HTML / CSS
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
建筑工程自我鉴定
2013/10/18 职场文书
医学生求职自荐信
2013/10/25 职场文书
乡镇八一建军节活动方案
2014/08/24 职场文书
继承权公证书范本
2015/01/23 职场文书
浅谈Python numpy创建空数组的问题
2021/05/25 Python
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL