php头像上传预览实例代码


Posted in PHP onMay 02, 2017

说道上传图片,大家并不陌生,不过,在以后开发的项目中,可能并不会让你使用提交刷新页面式的上传图片,比如上传头像,按照常理,肯定是在相册选择照片之后,确认上传,而肯定不会通过form表单,点击submit刷新式上传。我为大家介绍两种异步非刷新式上传图片+图片预览:第一种,通过现成的uploadfy插件进行上传,网上好多实例。

不过我重点为大家介绍的是第二种,通过Ajax上传图片。因为使用uploadfy插件需要设备支持swf格式的Flash,所以对大多数手机来说,第一种方式就没办法使用了。首先,我先跟大家说一下上传原理:通过js控制file文本域,当选择照片之后,通过Ajax异步提交form表单,然后将图片的位置作为返回值,使用js把img的src属性设置为返回值。

上传头像区域:

代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>

<link href="bootstrap-3.3.7-dist/css/bootstrap.min.css" rel="external nofollow" rel="stylesheet" type="text/css" />
<script src="bootstrap-3.3.7-dist/js/jquery-1.11.2.min.js"></script>
<script src="bootstrap-3.3.7-dist/js/bootstrap.min.js"></script>

<style type="text/css">
#yl{ width:200px; height:200px; background-image:url(img/avatar.png); background-size:200px 200px;}
#file{ width:200px; height:200px; float:left; opacity:0;}
.modal-content{ width:500px;}
.kk{ margin-left:130px;}
</style>

</head>

<body>
<!-- 按钮触发模态框 -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
  上传头像
</button>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
          ×
        </button>
        <h4 class="modal-title" id="myModalLabel">
          上传头像
        </h4>
      </div>
      <div class="modal-body">
        <form id="sc" action="upload.php" method="post" enctype="multipart/form-data" target="shangchuan">
  
  <input type="hidden" name="tp" value="" id="tp" />
  
  <div id="yl" class="kk">
    <input type="file" name="file" id="file" onchange="document.getElementById('sc').submit()" />
  </div>  
</form>
<iframe style="display:none" name="shangchuan" id="shangchuan">
</iframe>

      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">关闭
        </button>
        <!--<button type="button" class="btn btn-primary">
          提交更改
        </button>-->
        
      </div>
    </div><!-- /.modal-content -->
  </div><!-- /.modal -->
</div>


</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

if($_FILES["file"]["error"])
{
  echo $_FILES["file"]["error"];
}
else
{
  if(($_FILES["file"]["type"]=="image/jpeg" || $_FILES["file"]["type"]=="image/png")&& $_FILES["file"]["size"]<1024000000)
  {
    $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>";
    }
    
  }
}

原理:

通过form表单的enctype="multipart/form-data"属性将文件临时放到wamp文件夹中的tmp目录下,再通过后台php程序将文件保存在体统中。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php+dbfile开发小型留言本
Oct 09 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
php使用百度翻译api示例分享
Jan 31 PHP
PHP实现的英文名字全拼随机排号脚本
Jul 04 PHP
PHP中IP地址与整型数字互相转换详解
Aug 20 PHP
php类的定义与继承用法实例
Jul 07 PHP
zend framework中使用memcache的方法
Mar 04 PHP
Yii框架上传图片用法总结
Mar 28 PHP
Thinkphp开发--集成极光推送
Sep 15 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 #PHP
AJAX的使用方法详解
Apr 29 #PHP
PHP实现的DES加密解密封装类完整实例
Apr 29 #PHP
PHP编程实现csv文件导入mysql数据库的方法
Apr 29 #PHP
PHP实现ASCII码与字符串相互转换的方法
Apr 29 #PHP
PHP中Notice错误常见解决方法
Apr 28 #PHP
PHP实现查询手机归属地的方法详解
Apr 28 #PHP
You might like
ASP和PHP都是可以删除自身的
2007/04/09 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
phpmail类发送邮件函数代码
2012/02/20 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
基于jquery的textarea发布框限制文字字数输入(添加中文识别)
2012/02/16 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
JQuery中关于jquery.js与jquery.min.js的比较探讨
2013/05/15 Javascript
详谈nodejs异步编程
2014/12/04 NodeJs
纯javascript模仿微信打飞机小游戏
2015/08/20 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
JavaScript设计模式之单例模式详解
2017/06/09 Javascript
Node.js中 __dirname 的使用介绍
2017/06/19 Javascript
node.js通过axios实现网络请求的方法
2018/03/05 Javascript
微信小程序webview组件交互,内联h5页面并网页实现微信支付实现解析
2019/08/16 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
Node.js API详解之 os模块用法实例分析
2020/05/06 Javascript
使用JavaScript获取Django模板指定键值数据
2020/05/27 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
pycharm打开命令行或Terminal的方法
2019/01/16 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
新年福利来一波之Python轻松集齐五福(demo)
2020/01/20 Python
弄清Pytorch显存的分配机制
2020/12/10 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
Weblogic的布署方式
2013/08/23 面试题
新春文艺演出主持词
2014/03/27 职场文书
刑事辩护授权委托书
2014/09/13 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
工伤调解协议书
2016/03/21 职场文书
导游词之日本富士山
2020/01/06 职场文书
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js