`
Lamp兄弟
  • 浏览: 17649 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

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;
		}

 

分享到:
评论

相关推荐

    ajaxupload.js

    **AjaxUpload技术详解** AjaxUpload是一种在Web应用中实现异步文件上传的技术,它基于JavaScript的Ajax(Asynchronous JavaScript and XML)技术,允许用户在不刷新整个页面的情况下上传文件,提高了用户体验。`...

    jquery Ajaxupload应用

    **jQuery AjaxUpload应用详解** AjaxUpload是一款非常实用的JavaScript插件,它允许用户在无需刷新页面的情况下上传文件,极大地提升了用户体验。在这个详细的知识点解析中,我们将深入理解AjaxUpload的工作原理,...

    ajaxUpload.

    标题"ajaxUpload."和描述"ajaxUpload.ajaxUpload.ajaxUpload."暗示我们将深入探讨这个话题。 ### 一、Ajax Upload原理 Ajax Upload的核心是利用JavaScript的异步特性,通过XMLHttpRequest对象与服务器进行通信。它...

    ajaxupload无刷新文件上传,支持多文件上传,使用很方便哦

    ajaxupload.js 是一款使用jquery上传文件的js插件,对于简单的文件上传,足够可以应付, 你可以根据自身需要对前后端代码进行补充,也可以将一些功能独立出来,比如文件类型、单个文件或者多文件上传功能。总的来说...

    jquery 插件ajaxupload 的简单应用

    **jQuery插件AjaxUpload简介** AjaxUpload是一款基于jQuery的插件,它允许用户在无需刷新页面的情况下上传文件。这个插件极大地提升了用户体验,因为它能够实现在后台处理文件上传,同时还可以自定义各种反馈机制,...

    Jquery AjaxUpload实现文件上传实例 PHP版

    AjaxUpload是jQuery的一个插件,它提供了一种方便的异步文件上传方式,无需刷新页面即可完成文件上传,提高了用户体验。在这个“Jquery AjaxUpload实现文件上传实例 PHP版”中,我们将探讨如何使用jQuery的Ajax...

    ajaxupload华丽的图片上传

    利用ajaxupload组件实现的图片上传 1、在部署该工程时,要在tomcat/webapps/对应的工程下建upload/good目录; 2、在该工程中,点击一次上传图片按钮,就执行一次后台操作,然后将图片的路径保存在一个input的隐藏域...

    ajaxUpload示例

    **AjaxUpload 示例详解** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术是一种实现页面无刷新更新数据的方法,极大地提升了用户体验。AjaxUpload是基于Ajax技术的一种文件上传方式,它允许用户在不...

    ajaxupload.3.6.js

    ajaxupload.3.6.js 上传插件

    使用ajaxupload.js/ajaxfileupload.js实现文件上传

    `ajaxupload.js` 和 `ajaxfileupload.js` 是两个用于实现异步文件上传的JavaScript库,它们简化了这个过程并提供了丰富的自定义选项。 首先,`ajaxupload.js` 是一个轻量级的插件,它扩展了传统的Ajax功能,允许...

    Jquery AjaxUpload实现文件上传功能代码

    随着WEB技术的发展,用户体验成为衡量网站成功与否的关键,今天和大家分享如何在PHP中利用Jquery实现Ajax方式文件上传功能的例子,其中使用到了Jquery插件Ajaxupload,其可以实现单个文件和多文件上传功能。

    jquery ajax upload

    ajaxupload.js,附demo例子 ajaxupload.js,附demo例子 ajaxupload.js,附demo例子 ajaxupload.js,附demo例子 ajaxupload.js,附demo例子

    ajax_upload_ajaxupload_walkazj_源码

    AjaxUpload是一种无刷新文件上传技术,允许用户在不离开当前页面的情况下上传文件,提高了用户体验。 【描述】"ajax upload for php web site" 暗示了这个源码包是专门为PHP网站设计的,用于实现前端与后端通过Ajax...

    AjaxUpload.rar 文件上传

    AjaxUpload是一种基于JavaScript和Ajax技术实现的异步文件上传方式,它允许用户在不刷新整个网页的情况下上传文件,显著提升了用户体验。AjaxUpload的核心是利用XMLHttpRequest对象与服务器进行交互,通过创建隐藏的...

    AjaxUpload.js

    AjaxUpload.js可以实现在Web应用系统开发中,文件上传和下载功能.使用方法参考: https://blog.csdn.net/liangmengbk/article/details/89333350

    ajaxupload.js上传图片

    **AjaxUpload.js 图片上传详解** AjaxUpload.js 是一个JavaScript库,它允许用户在不刷新整个页面的情况下,通过Ajax技术实现文件(特别是图片)的上传。这种上传方式提供了更好的用户体验,因为用户可以在上传过程...

    jquery.ajaxupload.js

    AjaxUpload.js 就是一个js文件,里面封装了上传文件的代码,其实就是一个js的框架,利用它来更简单的实现文件的上传

    AjaxUpLoad.js实现文件上传功能

    AjaxUpLoad.js是一个使用JavaScript实现的上传控件库,它可以很方便地帮助开发者在网页上实现无刷新上传文件的功能。无刷新上传文件是指在不重新加载整个页面的情况下将文件数据上传到服务器的过程。AjaxUpLoad.js的...

Global site tag (gtag.js) - Google Analytics