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


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

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

效果图如下:

实现代码如下:

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="http://www.zimg.cn/source/+details[4]+" target="_blank"><img src="http://www.zimg.cn/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 = http://www.zimg.cn/source/;  
        if(!is_dir($pfolder)) { 
            mkdir($pfolder, 0755); 
        } 
 
    /*
        @@ This folder is for the image files with 120x120 dimensions.
    */ 
    $tfolder = http://www.zimg.cn/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程序设计有所帮助 。