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

  本例用到其他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程序设计有所帮助。