当我们上传不允许或超过允许大小的文件类型时,我试图使用javaScript显示错误。虽然如果不满足条件但不会上传图像,但也不会显示错误。
的functions.php
<?php
function createDir($path) {
if (! file_exists ( $path )) {
$old_mask = umask ( 0 );
mkdir ( $path, 0777, TRUE );
umask ( $old_mask );
}
}
function createThumb($path1, $path2, $file_type, $new_w, $new_h, $squareSize = '') {
/* read the source image */
$source_image = FALSE;
if (preg_match ( "/jpg|JPG|jpeg|JPEG/", $file_type )) {
$source_image = imagecreatefromjpeg ( $path1 );
} elseif (preg_match ( "/png|PNG/", $file_type )) {
if (! $source_image = @imagecreatefrompng ( $path1 )) {
$source_image = imagecreatefromjpeg ( $path1 );
}
} elseif (preg_match ( "/gif|GIF/", $file_type )) {
$source_image = imagecreatefromgif ( $path1 );
}
if ($source_image == FALSE) {
$source_image = imagecreatefromjpeg ( $path1 );
}
$orig_w = imageSX ( $source_image );
$orig_h = imageSY ( $source_image );
if ($orig_w < $new_w && $orig_h < $new_h) {
$desired_width = $orig_w;
$desired_height = $orig_h;
} else {
$scale = min ( $new_w / $orig_w, $new_h / $orig_h );
$desired_width = ceil ( $scale * $orig_w );
$desired_height = ceil ( $scale * $orig_h );
}
if ($squareSize != '') {
$desired_width = $desired_height = $squareSize;
}
/* create a new, "virtual" image */
$virtual_image = imagecreatetruecolor ( $desired_width, $desired_height );
// for PNG background white----------->
$kek = imagecolorallocate ( $virtual_image, 255, 255, 255 );
imagefill ( $virtual_image, 0, 0, $kek );
if ($squareSize == '') {
/* copy source image at a resized size */
imagecopyresampled ( $virtual_image, $source_image, 0, 0, 0, 0, $desired_width, $desired_height, $orig_w, $orig_h );
} else {
$wm = $orig_w / $squareSize;
$hm = $orig_h / $squareSize;
$h_height = $squareSize / 2;
$w_height = $squareSize / 2;
if ($orig_w > $orig_h) {
$adjusted_width = $orig_w / $hm;
$half_width = $adjusted_width / 2;
$int_width = $half_width - $w_height;
imagecopyresampled ( $virtual_image, $source_image, - $int_width, 0, 0, 0, $adjusted_width, $squareSize, $orig_w, $orig_h );
}
elseif (($orig_w <= $orig_h)) {
$adjusted_height = $orig_h / $wm;
$half_height = $adjusted_height / 2;
imagecopyresampled ( $virtual_image, $source_image, 0, 0, 0, 0, $squareSize, $adjusted_height, $orig_w, $orig_h );
} else {
imagecopyresampled ( $virtual_image, $source_image, 0, 0, 0, 0, $squareSize, $squareSize, $orig_w, $orig_h );
}
}
if (@imagejpeg ( $virtual_image, $path2, 90 )) {
imagedestroy ( $virtual_image );
imagedestroy ( $source_image );
return TRUE;
} else {
return FALSE;
}
}
?>
upload.php的
if ($_FILES ['image_upload_file'] ["error"] > 0) {
$output ['error'] = "Error in File";
} elseif (! in_array ( $_FILES ['image_upload_file'] ["type"], $allowedImageType )) {
$output ['error'] = "You can only upload JPG, PNG and GIF file";
} elseif (round ( $_FILES ['image_upload_file'] ["size"] / 1024 ) > 4096) {
$output ['error'] = "You can upload file size up to 4 MB";
} else {
/* create directory with 777 permission if not exist - start */
createDir ( IMAGE_SMALL_DIR );
createDir ( IMAGE_MEDIUM_DIR );
/* create directory with 777 permission if not exist - end */
$path [0] = $_FILES ['image_upload_file'] ['tmp_name'];
$file = pathinfo ( $_FILES ['image_upload_file'] ['name'] );
$fileType = $file ["extension"];
$desiredExt = 'jpg';
$fileNameNew = rand ( 333, 999 ) . time () . ".$desiredExt";
$path [1] = IMAGE_MEDIUM_DIR . $fileNameNew;
$path [2] = IMAGE_SMALL_DIR . $fileNameNew;
if (createThumb ( $path [0], $path [1], $fileType, IMAGE_MEDIUM_SIZE, IMAGE_MEDIUM_SIZE, IMAGE_MEDIUM_SIZE )) {
if (createThumb ( $path [1], $path [2], "$desiredExt", IMAGE_SMALL_SIZE, IMAGE_SMALL_SIZE, IMAGE_SMALL_SIZE )) {
$output ['status'] = TRUE;
$output ['image_medium'] = $path [1];
$output ['image_small'] = $path [2];
}
}
}
echo json_encode ( $output );
}
的settings.php
<script>
$(document).on('change', '#image_upload_file', function () {
var progressBar = $('.progressBar'), bar = $('.progressBar .bar'), percent = $('.progressBar .percent');
$('#image_upload_form').ajaxForm({
beforeSend: function() {
progressBar.fadeIn();
var percentVal = '0%';
bar.width(percentVal)
percent.html(percentVal);
},
uploadProgress: function(event, position, total, percentComplete) {
var percentVal = percentComplete + '%';
bar.width(percentVal)
percent.html(percentVal);
},
success: function(html, statusText, xhr, $form) {
obj = $.parseJSON(html);
if(obj.status){
var percentVal = '100%';
bar.width(percentVal)
percent.html(percentVal);
$("#imgArea>img").prop('src',obj.image_medium);
}else{
alert(obj.error);
}
},
complete: function(xhr) {
progressBar.fadeOut();
}
}).submit();
});
</script>