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 编写安全的代码时容易犯的错误小结
May 20 PHP
实战mysql导出中文乱码及phpmyadmin导入中文乱码的解决方法
Jun 11 PHP
php简单提示框alert封装函数
Aug 08 PHP
php控制linux服务器常用功能 关机 重启 开新站点等
Sep 05 PHP
php对文件夹进行相关操作(遍历、计算大小)
Nov 04 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
详解PHP中的序列化、反序列化操作
Mar 21 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php访问对象中的成员的实例方法
Nov 17 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
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
php导出excel格式数据问题
2014/03/11 PHP
php字符串函数学习之strstr()
2015/03/27 PHP
PHP实现微信发红包程序
2015/08/24 PHP
PHP设计模式之模板方法模式定义与用法详解
2018/04/02 PHP
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
node.js中的fs.read方法使用说明
2014/12/17 Javascript
jQuery中bind()方法用法实例
2015/01/19 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
基于Vue2.0的分页组件
2017/03/16 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
vue.js学习之UI组件开发教程
2017/07/03 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
JSON 入门教程基础篇 json入门学习笔记
2020/09/22 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python处理PHP数组文本文件实例
2014/09/18 Python
python3操作mysql数据库的方法
2017/06/23 Python
取numpy数组的某几行某几列方法
2018/04/03 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
2020/03/20 Python
Desigual英国官网:在线购买原创服装
2018/03/09 全球购物
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
Tea Collection官网:一家位于旧金山的童装公司
2020/08/07 全球购物
物流经理自我评价
2013/09/23 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
2014年安全管理工作总结
2014/12/01 职场文书
感恩节寄语2015
2015/03/24 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
运动员代表致辞
2015/07/29 职场文书
python实现ROA算子边缘检测算法
2021/04/05 Python
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
GPU服务器的多用户配置方法
2022/07/07 Servers