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 4.2书写安全的脚本
Oct 09 PHP
php 防止单引号,双引号在接受页面转义
Jul 10 PHP
PHP Squid中可缓存的动态网页设计
Sep 17 PHP
Ping服务的php实现方法,让网站快速被收录
Feb 04 PHP
php获得用户ip地址的比较不错的方法
Feb 08 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
Jun 22 PHP
PHP把JPEG图片转换成Progressive JPEG的方法
Jun 30 PHP
php计算两个整数的最大公约数常用算法小结
Mar 05 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
php测试kafka项目示例
Feb 06 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图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
php面向对象 字段的声明与使用
2012/06/14 PHP
php项目中百度 UEditor 简单安装调试和调用
2015/07/15 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
laravel5.1框架model类查询的实现方法
2019/10/08 PHP
异步加载script的代码
2011/01/12 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
推荐10个2014年最佳的jQuery视频插件
2014/11/12 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
利用Ionic2 + angular4实现一个地区选择组件
2017/07/27 Javascript
在小程序中使用canvas的方法示例
2018/09/17 Javascript
vue基础之使用get、post、jsonp实现交互功能示例
2019/03/12 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
高效使用Python字典的清单
2018/04/04 Python
python用插值法绘制平滑曲线
2021/02/19 Python
Django 内置权限扩展案例详解
2019/03/04 Python
Python读取stdin方法实例
2019/05/24 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
python sqlite的Row对象操作示例
2019/09/11 Python
python超时重新请求解决方案
2019/10/21 Python
Django项目使用ckeditor详解(不使用admin)
2019/12/17 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
关于django python manage.py startapp 应用名出错异常原因解析
2020/12/15 Python
TensorFlow的环境配置与安装方法
2021/02/20 Python
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
毕业生个人的自我评价优秀范文
2013/10/03 职场文书
早餐连锁店计划书
2014/01/08 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
小学家长评语大全
2014/04/16 职场文书
2015年幼儿园新年寄语
2014/12/08 职场文书
通报表扬范文
2015/01/17 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
Redis过期数据是否会被立马删除
2022/07/23 Redis