Ajaxupload

ajax+php 实现文件上传

用到的库文件ajaxfileupload.js在附件中下载。

function ajaxFileUpload(){
$.ajaxFileUpload
	(
		{
			url:'xxxx.php',
			secureuri:false,
			fileElementId:'fileToUpload',
			dataType: 'json',
			beforeSend:function()
			{
				$("#uploadloading").show();
			},
			success: function (data, status)
			{
				if(typeof(data.error) != 'undefined')
				{
					if(data.error == '1' )
					{
						alert(data.message);
					}else
					{
						//成功回调...
					}
				}
			},
			error: function (data, status, e)
			{
				alert(e);
			}
		}
	)
	return false;
}

 

<input type="file" name="imgFile" id="fileToUpload">
<button id="buttonUpload" onclick="return ajaxFileUpload();" type="button">上传</button>
<img src="loading.gif" id="uploadloading" style="display:none" />

 

function upload($is_rename=false,$path='version_package'){
				set_time_limit(0);
			 $php_path = Doo::conf()->SITE_PATH.'global/upload/';
			 $php_url = '/global/upload/';
			//文件保存目录路径
			 $save_path = $php_path . $path.'/';
			//文件保存目录URL
			$save_url = $php_url . $path.'/';
			//定义允许上传的文件扩展名
			$ext_arr = array(
				'image' => array('gif', 'jpg', 'jpeg', 'png', 'bmp'),
				'flash' => array('swf', 'flv'),
				'media' => array('swf', 'flv', 'mp3', 'wav', 'wma', 'wmv', 'mid', 'avi', 'mpg', 'asf', 'rm', 'rmvb'),
				'file' => array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'htm', 'html', 'txt', 'zip', 'rar', 'gz', 'bz2','pptx'),
			);
			//最大文件大小
			$max_size = 500000000;

			$save_path = realpath($save_path) . '/';

			//PHP上传失败
			if (!empty($_FILES['imgFile']['error'])) {
				switch($_FILES['imgFile']['error']){
					case '1':
						$error = '超过php.ini允许的大小。';
						break;
					case '2':
						$error = '超过表单允许的大小。';
						break;
					case '3':
						$error = '图片只有部分被上传。';
						break;
					case '4':
						$error = '请选择文件。';
						break;
					case '6':
						$error = '找不到临时目录。';
						break;
					case '7':
						$error = '写文件到硬盘出错。';
						break;
					case '8':
						$error = 'File upload stopped by extension。';
						break;
					case '999':
					default:
						$error = '未知错误。';
				}
				$this->alert($error);
			}
			//有上传文件时
			if (empty($_FILES) === false) {
				//原文件名
				$file_name = $_FILES['imgFile']['name'];
				//服务器上临时文件名
				$tmp_name = $_FILES['imgFile']['tmp_name'];
				//文件大小
				$file_size = $_FILES['imgFile']['size'];
				//检查文件名
				if (!$file_name) {
					alert("请选择文件。");
				}
				//检查目录
				if (@is_dir($save_path) === false) {
					alert("上传目录不存在。");
				}
				//检查目录写权限
				if (@is_writable($save_path) === false) {
					alert("上传目录没有写权限。");
				}
				//检查是否已上传
				if (@is_uploaded_file($tmp_name) === false) {
					alert("上传失败。");
				}
				//检查文件大小
				if ($file_size > $max_size) {
					alert("上传文件大小超过限制。");
				}
				//检查目录名
				$dir_name = empty($_GET['dir']) ? 'file' : trim($_GET['dir']);
				if (empty($ext_arr[$dir_name])) {
					alert("目录名不正确。");
				}
				//获得文件扩展名
				$temp_arr = explode(".", $file_name);
				$file_ext = array_pop($temp_arr);
				$file_ext = trim($file_ext);
				$file_ext = strtolower($file_ext);
				//检查扩展名
				//if (in_array($file_ext, $ext_arr[$dir_name]) === false) {
				//	alert("上传文件扩展名是不允许的扩展名。\n只允许" . implode(",", $ext_arr[$dir_name]) . "格式。");
				//}
				//创建文件夹
				if ($dir_name !== '') {
					$save_path .= $dir_name . "/";
					$save_url .= $dir_name . "/";
					if (!file_exists($save_path)) {
						mkdir($save_path);
					}
				}
				$ymd = date("Ymd");
				$save_path .= $ymd . "/";
				$save_url .= $ymd . "/";
				if (!file_exists($save_path)) {
					mkdir($save_path);
				}
				//新文件名
				$new_file_name = $file_name;//date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext;
				if($is_rename==true){
					$new_file_name=date("YmdHis") . '_' . rand(10000, 99999) . '.' . $file_ext;
				}
				//移动文件
				$file_path = $save_path . $new_file_name;

				if (move_uploaded_file($tmp_name, $file_path) === false) {
					alert("上传文件失败。");
				}
				@chmod($file_path, 0644);
				$file_url = $save_url . $new_file_name;

				header('Content-type: text/html; charset=UTF-8');
				//$this->toJSON(array('error' => 0, 'url' => $file_url),true);
				echo json_encode(array('error' => 0, 'url' => $file_url,'size'=>$file_size,'date'=>date("Y-m-d H:i:s")));
				exit;
			}
				
				
		}
		function alert($msg) {
			header('Content-type: text/html; charset=UTF-8');
			//$this->toJSON(array('error' => 1, 'message' => $msg),true);
			echo json_encode(array('error' => 1, 'message' => $msg));
			exit;
		}

 

你可能感兴趣的:(upload)