Posted in PHP onOctober 15, 2014
本例用到其他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="../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程序设计有所帮助。
jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
- Author -
shichen2014声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@