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 相关文章推荐
模拟OICQ的实现思路和核心程序(一)
Oct 09 PHP
PHP date函数参数详解
Nov 27 PHP
php下实现农历日历的代码
Mar 07 PHP
php access 数据连接与读取保存编辑数据的实现代码
May 12 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
ThinkPHP中处理表单中的注意事项
Nov 22 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
分享自定义的几个PHP功能函数
Apr 15 PHP
PHP 微信支付类 demo
Nov 30 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP构造二叉树算法示例
Jun 21 PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 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中usort在值相同时改变原始位置问题的解决方法
2011/11/27 PHP
各种快递查询--Api接口
2016/04/26 PHP
PHP中的print_r 与 var_dump 输出数组
2016/06/13 PHP
PHP多进程编程实例详解
2017/07/19 PHP
javascript Onunload与Onbeforeunload使用小结
2009/12/31 Javascript
jquery学习笔记二 实现可编辑的表格
2010/04/09 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
sencha touch 模仿tabpanel导航栏TabBar的实例代码
2013/10/24 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
2014/02/22 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
详解jQuery中的deferred对象的使用(一)
2016/05/27 Javascript
使用ReactJS实现tab页切换、菜单栏切换、手风琴切换和进度条效果
2016/10/17 Javascript
详解vue + vuex + directives实现权限按钮的思路
2017/10/24 Javascript
详解vue 组件之间使用eventbus传值
2017/10/25 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
利用Promise自定义一个GET请求的函数示例代码
2019/03/20 Javascript
压缩Vue.js打包后的体积方法总结(Vue.js打包后体积过大问题)
2020/02/03 Javascript
用Python输出一个杨辉三角的例子
2014/06/13 Python
Django实现图片文字同时提交的方法
2015/05/26 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
大一期末自我鉴定
2013/12/13 职场文书
写自荐信要注意什么
2013/12/26 职场文书
幼儿园家长评语
2014/02/10 职场文书
新闻工作者先进事迹
2014/05/26 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
政府班子四风问题整改措施
2014/10/04 职场文书
2015秋季开学演讲稿范文
2015/07/16 职场文书
工作服管理制度范本
2015/08/06 职场文书
分享几个实用的CSS代码块
2022/06/10 HTML / CSS