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 相关文章推荐
同时提取多条新闻中的文本一例
Oct 09 PHP
mysql中存储过程、函数的一些问题
Feb 14 PHP
php中静态类与静态变量用法的区别分析
Jan 15 PHP
php随机抽奖实例分析
Mar 04 PHP
Symfony2实现在doctrine中内置数据的方法
Feb 05 PHP
PHP模板引擎Smarty中的保留变量用法分析
Apr 11 PHP
YII视图整合kindeditor扩展的方法
Jul 13 PHP
php制作基于xml的RSS订阅源功能示例
Feb 08 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
详解PHP中curl_multi并发的实现
Jun 08 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
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
探讨Hessian在PHP中的使用分析
2013/06/13 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php自定义错误处理用法实例
2015/03/20 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
showModalDialog 和 showModelessDialog
2007/01/22 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
Javascript 实现TreeView CheckBox全选效果
2010/01/11 Javascript
JS拖动技术 关于setCapture使用
2010/12/09 Javascript
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
Bootstrap按钮组件详解
2016/04/26 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
layer.js open 隐藏滚动条的例子
2019/09/05 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
Python中列表的一些基本操作知识汇总
2015/05/20 Python
python发送邮件实例分享
2017/07/28 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
Python 错误和异常代码详解
2018/01/29 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
由面试题加深对Django的认识理解
2019/07/19 Python
python 比较2张图片的相似度的方法示例
2019/12/18 Python
解决python 找不到module的问题
2020/02/12 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
27个经典Linux面试题及答案,你知道几个?
2013/01/10 面试题
EJB3推出JPA的原因
2013/10/16 面试题
初三政治教学反思
2014/01/30 职场文书
生日礼品店创业计划书范文
2014/03/21 职场文书
代领学位证书毕业证书委托书
2014/09/30 职场文书
2014年纠风工作总结
2014/12/08 职场文书
党校个人总结
2015/03/04 职场文书
小学班级标语口号大全
2015/12/26 职场文书
简单聊聊Vue中的计算属性和属性侦听
2021/10/05 Vue.js