PHP+jQuery+Ajax实现多图片上传效果


Posted in Javascript onMarch 14, 2015

今天我给大家分享的是在不刷新页面的前提下,使用PHP+jQuery+Ajax实现多图片上传的效果。用户只需要点击选择要上传的图片,然后图片自动上传到服务器上并展示在页面上。

PHP+jQuery+Ajax实现多图片上传效果

HTML

我们在页面上放置一个form表单,使用post提交到后台php处理程序upload.php,注意enctype属性设置要支持文件上传。#preview用来显示上传完毕后的图片。关于css样式设置本文不加说明,请参照下载包的源码。

<form id="imageform" method="post" enctype="multipart/form-data" action="upload.php"> 

    <div id="up_status" style="display:none"><img src="loader.gif" alt="uploading"/></div> 

    <div id="up_btn" class="btn"> 

        <span>添加图片</span> 

        <input id="photoimg" type="file" name="photoimg"> 

    </div> 

</form> 

<p>最大100KB,支持jpg,gif,png格式。</p> 

<div id="preview"></div>

jQuery
本实例基于jQuery,因此必须在页面中载入jquery库以及jquery.wallform.js。

<script type="text/javascript" src="jquery.min.js"></script> 

<script type="text/javascript" src="jquery.wallform.js"></script>

当点击按钮“添加图片”后,弹出选择文件对话框,选择要上传的图片后,触发change事件。然后表单#imageform调用jquery.wallform.js的ajaxForm()方法,将表单数据提交给后台PHP处理,并根据返回结果处理页面元素的展示。如果上传成功,图片会一张张排列显示在页面上。关于ajaxForm()的使用可以参照本站文章:Ajax表单提交插件jqery form。

$(function(){ 

    $('#photoimg').die('click').live('change', function(){ 

        var status = $("#up_status"); 

        var btn = $("#up_btn"); 

        $("#imageform").ajaxForm({ 

            target: '#preview',  

            beforeSubmit:function(){ 

                status.show(); 

                btn.hide(); 

            },  

            success:function(){ 

                status.hide(); 

                btn.show(); 

            },  

            error:function(){ 

                status.hide(); 

                btn.show(); 

        } }).submit(); 

    }); 

});

PHP

upload.php处理图片上传,并将上传好的图片保存在uploads/目录,注意该目录要有写权限。首先需要检测是否为POST方式提交,然后判断图片格式、图片大小是否符合要求,然后使用move_uploaded_file()上传图片,并将图片重命名,格式为:time().rand(100,999)。

$path = "uploads/"; 

$extArr = array("jpg", "png", "gif"); 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 

    $name = $_FILES['photoimg']['name']; 

    $size = $_FILES['photoimg']['size']; 

    if(empty($name)){ 

        echo '请选择要上传的图片'; 

        exit; 

    } 

    $ext = extend($name); 

    if(!in_array($ext,$extArr)){ 

        echo '图片格式错误!'; 

        exit; 

    } 

    if($size>(100*1024)){ 

        echo '图片大小不能超过100KB'; 

        exit; 

    } 

    $image_name = time().rand(100,999).".".$ext; 

    $tmp = $_FILES['photoimg']['tmp_name']; 

    if(move_uploaded_file($tmp, $path.$image_name)){ 

        echo '<img src="'.$path.$image_name.'"  class="preview">'; 

    }else{ 

        echo '上传出错了!'; 

    } 

    exit; 

} 

//获取文件类型后缀 

function extend($file_name){ 

    $extend = pathinfo($file_name); 

    $extend = strtolower($extend["extension"]); 

    return $extend; 

}

当然,实际应用中,可以与数据库以及用户中心结合,将用户上传的图片保存在数据表中,具体应用大家可以自行研究。

以上就是本文给大家分享的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
转自Jquery官方 jQuery1.1.3发布,速度提升800%,体积保持20K
Aug 19 Javascript
jquery CSS选择器笔记
Mar 29 Javascript
javascript 树形导航菜单实例代码
Aug 13 Javascript
鼠标移到图片上变大显示而不是放大镜效果
Jun 15 Javascript
javascript实现带节日和农历的日历特效
Feb 01 Javascript
JavaScript正则表达式的分组匹配详解
Feb 13 Javascript
JavaScript实现输入框与清空按钮联动效果
Sep 09 Javascript
详解Angular的8个主要构造块
Jun 20 Javascript
vue项目前端埋点的实现
Mar 06 Javascript
jquery 时间戳转日期过程详解
Oct 12 jQuery
JavaScript实现点击图片换背景
Nov 20 Javascript
video.js添加自定义组件的方法
Dec 09 Javascript
jQuery oLoader实现的加载图片和页面效果
Mar 14 #Javascript
jQuery实现购物车数字加减效果
Mar 14 #Javascript
jQuery+PHP实现动态数字展示特效
Mar 14 #Javascript
jQuery+slidereveal实现的面板滑动侧边展出效果
Mar 14 #Javascript
jQuery+jRange实现滑动选取数值范围特效
Mar 14 #Javascript
jQuery实现加入购物车飞入动画效果
Mar 14 #Javascript
jQuery插件实现大图全屏图片相册
Mar 14 #Javascript
You might like
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
Javascript实现的分页函数
2006/12/22 Javascript
可以文本显示的公告栏的js代码
2007/03/11 Javascript
js截取固定长度的中英文字符的简单实例
2013/11/22 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
JS获取iframe中longdesc属性的方法
2015/04/01 Javascript
JavaScript实现自动消除按钮功能的方法
2015/08/05 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
探索Javascript中this的奥秘
2016/12/11 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
说说node中的可读流和可写流的区别
2018/06/01 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
Python复制文件操作实例详解
2015/11/10 Python
Python Requests安装与简单运用
2016/04/07 Python
python opencv之分水岭算法示例
2018/02/24 Python
Python3.6日志Logging模块简单用法示例
2018/06/14 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
python orm 框架中sqlalchemy用法实例详解
2020/02/02 Python
Python小白不正确的使用类变量实例
2020/05/29 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
Selenium alert 弹窗处理的示例代码
2020/08/06 Python
python中的时区问题
2021/01/14 Python
CSS3感应鼠标的背景闪烁和图片缩放动画效果
2014/05/14 HTML / CSS
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
美国在线购物频道:Shop LC
2019/04/21 全球购物
SOA的常见陷阱或者误解是什么
2014/10/05 面试题
高中自我评价分享
2013/12/05 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
关于安全的广播稿
2014/10/23 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang