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 相关文章推荐
JS完成代码前最好对其做5件事
Apr 07 Javascript
JQuery中如何传递参数如click(),change()等具体实现
Apr 28 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
javascript+html5实现绘制圆环的方法
Jul 28 Javascript
jquery实现鼠标悬浮停止轮播特效
Aug 20 Javascript
jQuery处理XML文件的几种方法
Jun 14 Javascript
JavaScript基本语法_动力节点Java学院整理
Jun 26 Javascript
AngularJS基于provider实现全局变量的读取和赋值方法
Jun 28 Javascript
基于twbsPagination.js分页插件使用心得(分享)
Oct 21 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
Feb 05 Javascript
laypage.js分页插件使用方法详解
Jul 27 Javascript
封装微信小程序http拦截器过程解析
Aug 13 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
ASP和PHP都是可以删除自身的
2007/04/09 PHP
php socket通信简单实现
2016/11/18 PHP
php表单处理操作
2017/11/16 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
Convert Seconds To Hours
2007/06/16 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
简单谈谈node.js 版本控制 nvm和 n
2015/10/15 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
ReactNative短信验证码倒计时控件的实现代码
2017/07/20 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
2018/03/14 Javascript
用js编写留言板
2020/03/17 Javascript
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python中的FTP通信模块ftplib的用法整理
2016/07/08 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
对pycharm代码整体左移和右移缩进快捷键的介绍
2018/07/16 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
介绍一下SQL Server的全文索引
2013/08/15 面试题
财务部岗位职责
2013/11/19 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
写给女生的道歉信
2014/01/14 职场文书
教师党员岗位承诺书
2014/05/29 职场文书
2015年党员自评材料
2014/12/17 职场文书
教师节校长致辞
2015/07/31 职场文书
创业计划书之水果店
2019/07/18 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python
java多态注意项小结
2021/10/16 Java/Android