jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码


Posted in PHP onOctober 15, 2014

本例用到其他2个php class.upload.php和 functions.php还有css和js以及img文件

完整实例代码点击此处本站下载。

效果图如下:

jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码

实现代码如下:

JavaScript代码如下:

<script type="text/javascript">  

$(document).ready(function() {  

    $("#filelist").niceScroll({  

        cursorwidth: "8px",  

        cursorborderradius: "0px",  

        cursoropacitymin: 0.1,  

        cursoropacitymax: 0.3  

    });  

  

    $(".side-pane").niceScroll({  

        cursorwidth: "8px",  

        cursorborderradius: "0px",  

        cursoropacitymin: 0.1,  

        cursoropacitymax: 0.3  

    });  

  

    $(".time").timeago();  

});  

</script>
 

javascript代码如下:

<script type="text/javascript">  

        // <![CDATA[ 

 

            $('#upload_button').click(function() { 

                $('.side-pane').html(''); 

                $('#upload_button').hide(); 

                $('#pickfiles').hide(); 

                $('#upload_info').show(); 

                $('#upload_info').css("display","inherit"); 

                uploader.start(); 

 

                $('#filelist').block({ 

                    message: '<center><div class="start-message">Upload in Progress</div></center>', 

                    css: { 

                        border: 'none', 

                        backgroundColor: 'none' 

                    }, 

                    overlayCSS: { 

                        backgroundColor: '#fff', 

                        opacity: '0', 

                        cursor: 'wait' 

                    } 

                }); 

            }); 

 

            var uploader = new plupload.Uploader({ 

                runtimes : 'flash, html5', 

                browse_button : 'pickfiles', 

                container : 'uploader', 

                max_file_size : '10mb', 

                url : 'upload.php', 

                flash_swf_url : 'uploader/uploader.swf', 

                filters : [ 

                    { title : "Image files", extensions : "jpg,jpeg,gif,png" } 

                ] 

            }); 

 

            uploader.bind('Init', function(up, params) {}); 

            uploader.init(); 

 

            uploader.bind('FilesAdded', function(up, files) { 

                /* 

                    @@ Show / hide various elements 

                */ 

                $('.upload-message').hide(); 

                $('.info-message').hide(); 

                $('#upload_button').show(); 

                $('#filelist_header').show(); 

 

                $.each(files, function(i, file) { 

                    $('#filelist').append( 

                        '<div id="' + file.id + '" class="filecontainer">' + 

                        '<div class="filename"> '+file.name + '</div>'+ 

                        '<div class="filesize">' + plupload.formatSize(file.size) + '</div>'+ 

                        '<div class="filestatus" id="status_'+file.id+'">0%</div>'+ 

                        '<div class="filedel"><a id="remove_'+file.id+'" href="javascript:;"><img src="img/uploader/delete.gif" /></a></div>' + 

                        '</div>'); 

 

                    $('#remove_'+file.id).click(function(e) { 

                        uploader.removeFile(file) 

                        $('#'+file.id).hide('slow', function() { ('#'+file.id).remove(); }); 

                    }); 

                }); 

 

                up.refresh(); 

                $('#filelist').animate({scrollTop: $('#filelist').attr("scrollHeight")}, 1500); 

            }); 

 

            uploader.bind('UploadProgress', function(up, file) { 

                $('#status_' + file.id).html(file.percent + "%"); 

                    if(file.percent == 100) { 

                        $('#' + file.id).block({ 

                            message: '', 

                            css: { 

                                border: 'none', 

                                backgroundColor: 'none' 

                            }, 

                            overlayCSS: { 

                                backgroundColor: '#fff', 

                                opacity: '0.7', 

                                cursor: 'wait' 

                            } 

                        }); 

                    } 

                $('#percent').width(uploader.total.percent+"%"); 

                $('#upRate').text(Math.ceil(uploader.total.bytesPerSec/1024)+" kb/sec"); 

            }); 

 

            uploader.bind('FileUploaded', function(up, file, response) { 

                var input = $("#uploaded_photos"); 

                var data = response.response; 

                var details = data.split(','); 

                    if(details[0] == 'success') { 

                        var photo_html = '<div class="padding-10 hm-photo clearfix"><a href="../upload/source/'+details[4]+'" target="_blank"><img src="../upload/small/'+details[4]+'"></a><p class="small-text light-text">'+details[1]+'</p><abbr class="time small-text" title="'+details[2]+'"></abbr></div>'; 

                        input.val(input.val() + details[1] + ":"); 

                    } else { 

                        var photo_html = '<div class="clearfix">'+details[1]+'</div>'; 

                    } 

                $('.side-pane').prepend(photo_html); 

                $('.time').timeago(); 

            }); 

 

            uploader.bind('UploadComplete', function(up, files) { 

                $('#upload_info').hide(); 

                $('#filelist').unblock({ 

                    onUnblock: function () { 

                        $('#filelist_header').hide(); 

                        $('#filelist').html('<div style="margin-top: 180px; text-align: center;"><strong>ok</strong><br/>All photos have been uploaded.</div>'); 

                    } 

                }); 

            }); 

 

        // ]]>  

        </script>

上面2个js都放在index.php里面

XML/HTML代码如下:

<div id="uploader" class="main-pane">  

            <div id="filelist_header" class="clearfix">  

                <div class="filename">Name</div>  

                <div class="filesize">Size</div>  

                <div class="filestatus">Status</div>  

                <div class="filedel"></div>  

                <div></div>  

            </div>  

  

            <div id="filelist"></div>  

  

            <div class="action-btns">  

                <a id="pickfiles" class="login-button btn">Select files to upload</a>  

                <a href="javascript:;" id="upload_button" class="login-button upload hide">Upload</a>  

            </div>  

  

            <center>  

                <div id="upload_info">  

                    <div id="upload_info_inner">  

                        <div class="progressbg">  

                            <div id="percent" class="progress"></div>  

                        </div>  

                    </div>  

  

                    <div id="unknown">  

                        <div id="time2go"></div>  

                        <div id="upRate"></div>  

                    </div>  

                </div>  

            </center>  

  

            <form method="POST" action="process.php" id="processupload">  

                <input type="hidden" name="uploaded_photos" id="uploaded_photos" />  

                <input type="hidden" name="fkey" value="<?php echo $fkey; ?>" />  

            </form>  

        </div>

upload.php页面代码如下:

<?php  

/* 

    @@ Including the functions.php for using the necessary functions. 

*/  

include('functions.php');  

  

/* 

    @@ This is the file upload class which does all the uploading work. 

*/  

include('class.upload.php');  

  

if(isset($_FILES["file"])) {  

    /* 

        @@ Generating unique name for the photo. 

    */  

    $time = time();  

    $rand_1 = rand(999, 999999);  

    $rand_2 = rand(999999, 999999999);  

    $rand_3 = rand();  

    $unique_value = $time.'_'.$rand_1.'_'.$rand_2.'_'.$rand_3;  

  

    /* 

        @@ Folder creation for each and every day. This ensures performance even with millions of images. 

    */  

    $folder = date('zY');  

        if(substr($folder, 0) == 0) {  

            $folder = '367'.date('Y');  

        }  

  

    /* 

        @@ This folder is for the source image files. 

    */  

    $pfolder = '../upload/source/';   

        if(!is_dir($pfolder)) {  

            mkdir($pfolder, 0755);  

        }  

  

    /* 

        @@ This folder is for the image files with 120x120 dimensions. 

    */  

    $tfolder = '../upload/small/';  

        if(!is_dir($tfolder)) {  

            mkdir($tfolder, 0755);  

        }  

  

    /* 

        @@ Assigning the upload file to the upload class for all the processing. 

    */  

    $handle = new Upload($_FILES["file"]);  

        if($handle->uploaded) {  

            $extension = $handle->file_src_name_ext;  

            $mime = $handle->file_src_mime;  

  

                if(($mime == 'image/gif') || ($mime == 'image/jpg') || ($mime == 'image/png') || ($mime == 'image/bmp') || ($mime == 'image/pjpeg') | ($mime == 'image/jpeg')) {  

                    /* 

                        @@ Check if the uploaded filetype is an image or not. 

                    */  

                    if(($extension == 'gif') || ($extension == 'jpg') || ($extension == 'jpeg') || ($extension == 'png') || ($extension == 'bmp') || ($extension == 'pjpeg')) {  

                        if($handle->image_src_x > 500) {  

                                /* 

                                    @@ Check if the filesize is smaller than 10 MB. 10 MB = 10485760 bytes. 

                                */  

                            if($handle->file_src_size < 10485760) {  

                                /* 

                                    @@ Getting the actual file name (with and without extension) and sanitizing it for inserting in the database. 

                                */  

                                $real_name = clean_input($handle->file_src_name);  

                                $body_name = clean_input($handle->file_src_name_body);  

  

                                $handle->file_new_name_body = $unique_value.'_'.$body_name;  

                                $handle->Process($pfolder);  

  

                                $handle->image_resize = true;  

                                $handle->image_ratio_crop = 'T';  

                                $handle->image_y = 120;  

                                $handle->image_x = 120;  

                                $handle->file_new_name_body = $unique_value.'_'.$body_name;  

                                $handle->Process($tfolder);  

  

                                    if($handle->processed) {  

                                        $actual_name = $handle->file_dst_name;  

                                        $size = ceil($handle->file_src_size / 1024);  

  

                                        ## Sending photo details back to the uploader.  

                                        $date = date("c", $time);  

  

                                            ## Reducing the length of real name if it exceeds 50 characters.  

                                            if(strlen($real_name) > 50) {  

                                                $real_name = substr($real_name, 0, 50).'..';  

                                            }  

                                            echo 'success,'.$real_name.','.$date.','.$folder.','.$actual_name;  

                                    } else {  

                                        echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>There was an error uploading the photo.</div>';  

                                    }  

                            } else {  

                                echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>The photo is bigger than the allowed upload size of <strong>10MB</strong>.</div>';  

                            }  

                        } else {  

                            echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>You are trying to upload a photo with smaller dimensions.</div>';  

                        }  

                    } else {  

                        echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>Only photo uploads are allowed.</div>';  

                    }  

                } else {  

                    echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>Only photo uploads are allowed.</div>';  

                }  

        } else {  

            echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>An upload error occured.</div>';             

        }  

    /* 

        @@ Return the json response to the script. 

    */  

    $handle->Clean();  

} else {  

    echo 'error,<div class="alert alert-error"><strong>Upload Error</strong><br/>An upload error occured.</div>';  

}

希望本文所述对大家的PHP+jQuery程序设计有所帮助。

PHP 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
如何在PHP中使用Oracle数据库(3)
Oct 09 PHP
创建数据库php代码 用PHP写出自己的BLOG系统
Apr 12 PHP
献给php初学者(入门学习经验谈)
Oct 12 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
Aug 09 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
php中关于长度计算容易混淆的问题分析
May 27 PHP
php gd等比例缩放压缩图片函数
Jun 12 PHP
thinkPHP模板中for循环与switch语句用法示例
Nov 30 PHP
ecshop添加菜单及权限分配问题
Nov 21 PHP
Laravel中9个不经常用的小技巧汇总
Apr 16 PHP
PHP实现文件下载断点续传详解
Oct 15 #PHP
PHP多进程编程实例
Oct 15 #PHP
PHP实现采集中国天气网未来7天天气
Oct 15 #PHP
跟我学Laravel之视图 &amp; Response
Oct 15 #PHP
跟我学Laravel之请求与输入
Oct 15 #PHP
跟我学Laravel之路由
Oct 15 #PHP
跟我学Laravel之请求(Request)的生命周期
Oct 15 #PHP
You might like
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
PHP 转义使用详解
2013/07/15 PHP
两种php去除二维数组的重复项方法
2015/11/04 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
php微信分享到朋友圈、QQ、朋友、微博
2019/02/18 PHP
解析Javascript中难以理解的11个问题
2013/12/09 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
基于JS实现PHP的sprintf函数实例
2015/11/14 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
javascript数组去重方法分析
2016/12/15 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
vue elementui el-form rules动态验证的实例代码详解
2019/05/23 Javascript
如何换个角度使用VUE过滤器详解
2019/09/11 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python标准库inspect的具体使用方法
2017/12/06 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
python操作openpyxl导出Excel 设置单元格格式及合并处理代码实例
2019/08/27 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
python读取多层嵌套文件夹中的文件实例
2020/02/27 Python
办公室驾驶员岗位职责
2013/11/15 职场文书
停车场管理协议书范本
2014/10/08 职场文书
2014年工人工作总结
2014/11/25 职场文书
天下第一关导游词
2015/02/06 职场文书
紧急迫降观后感
2015/06/15 职场文书
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
2021/04/05 MySQL
alibaba seata服务端具体实现
2022/02/24 Java/Android