`
webcode
  • 浏览: 6111364 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

php实现文件上传的例子(附详细源码)

 
阅读更多

今天用PHP做了个文件上传工具,功能还是很完善滴,如下:

每个图片上传之后,都有自己的地址,改变原图位置或重命名时,将不会重复上传。

一、功能:

A:文件分类上传

B:生成相应的文件夹,如本例,选择团,生成文件夹tuan

C:点击图片,查看详细

二、HTML代码:

	<div id="container">
		<fieldset>
			<legend class="img"><img width="100%" src="css/logo.png" /></legend>
			<form action="" method="post" name="myform" id="myform" onsubmit="return false" enctype="multipart/form-data">
			    <strong>亲,请选择你要上传的文件</strong>
				<div class="file"><input type="file" id="fileToUpload" name="fileToUpload" /></div>
				<select id="product">
               		<option value="" <?php if(empty($pname)){ echo "selected" ;} ?> >请选择产品</option>
               		<option value="tuan" <?php if($pname == '2000tuan'){ echo "selected" ;} ?> >团</option>			
               	</select>
               	<button id="postBtn" >Submit</button>
			</form>
			<div id="info"></div>
			<div style="position:relative; top:40px; left:20px;">
				<a id="loading" style="display:none"><img width="10%" src="css/loading.gif" /></a>
			</div>
			<a href="#" id="img_link" target="_blank">
				<div id="img_url">buding</div>
				<br/>
				<img class="preview" id="preview" src="" style="display:none;margin:0 auto" />
			</a>
		</fieldset>
	</div>

三、Javascript代码:

	<script type="text/javascript">
		$('#postBtn').click(function(){
			$('#preview').hide();
			$('#img_url').hide();
			$('#loading')
				.ajaxStart(function(){
					$(this).show();
				})
				.ajaxComplete(function(){
					$(this).hide();
				});
			if($('#fileToUpload').val() == ""){
				$('#info').html("亲,还没选择文件呢");
				var jObject={"Url":"","Height":413};
				var jString=JSON.stringify(jObject);
				window.parent.postMessage(jString,'*');
				return false;
			} 
			if($('#product').val() == ""){
				$('#info').html("亲,还没选择产品呢");
				$('#info').css("color","#e9af32");
				var jObject={"Url":"","Height":413};
				var jString=JSON.stringify(jObject);
				window.parent.postMessage(jString,'*');
				return false;
			} 
			var val = $('#product').val();
			$.ajaxFileUpload({	
				url:'ajaxupload.php',
				secureuri:false,
				fileElementId:'fileToUpload',
				dataType: 'text',
				data:{product:val},
				success: function (data, status)
				{
					if(data.search(/http:\/\//i) < 0 ){
						$('#info').html(data);
						var jObject={"Url":"","Height":413};
						var jString=JSON.stringify(jObject);
						window.parent.postMessage(jString,'*');
					}else{
						$('#info').html("您上传的文件为:<br/>");
						$('#preview').attr("src",data);
						$('#img_link').attr("href",data);
						$('#img_url').html(data);
						$('#preview').show();
						$('#img_url').show();
						$('#preview').load(function(){
							var imgH=$('#preview').height();
							var jObject={"Url":data,"Height":imgH+228,"oid":"<?php echo @$_REQUEST['oid']; ?>"};
							var jString=JSON.stringify(jObject);
							window.parent.postMessage(jString,'*');
						});
					}
				},
				error: function (data, status, e){	
					$('#info').html(data+e);
				}
			});
		});
	</script>

四、PHP代码

<?php
require_once('config.php');
if(empty($_FILES) || empty($_REQUEST)){
	header('location:imgupload.php');
	exit;
}

array_push($_FILES, $_REQUEST);

$filename = 'fileToUpload';
$product = @$_FILES[0]['product'];
$today = date("Y-m-d");
$time = date("YmdHis"); 
$year = date("Y");
$month = date("m");
$day = date("d");
$img_path = $product.'/'.$year.'/'.$month.'/'.$day.'/';
$destination_dir = ROOT_PATH.'/pic/'.$img_path.'/';

if(!is_uploaded_file($_FILES[$filename]['tmp_name'])){//验证上传文件是否存在
	echo "请选择你想要上传的图片";
	exit;
}
	
if($product == "") {//选择产品
   	echo "请选择产品";
	exit;
}
	$files = $_FILES[$filename];
   
	if($max_file_size < $files['size']){//判断文件是否超过限制大小
		echo "图片太大了,传个小点的吧(<=2MB)";
		exit;
	}
		
	if(!file_exists($destination_dir)) {//判断上传目录是否存在,不存在则创建一个.
		if(!mkdir($destination_dir,0777,true)) {
			echo "创建目录 {".$destination_dir."} 失败<可能是权限问题>";
			exit;
		}
	}
	$type = pathinfo($files['name']);
    $type = strtolower($type["extension"]);
	$type =".".$type;
	$tmp_name = $files['tmp_name'];
	$md5file = md5_file($tmp_name);//生成md5文件
	$new_name =$md5file.$type;
    $img_relat_path = $img_path.$new_name;
	$img_abs_path =	$destination_dir.$new_name;
		
    $url = IMG_URL.$img_relat_path;

    //判断数据库中图片是否存在
    $sql="select url from file_url where md5 = '".$md5file."'";
    $res=$db->getOne($sql);
    if($res) {
        echo $res['url'];
        exit; 
    }      
   
    if(!move_uploaded_file ($files['tmp_name'], $img_abs_path)) {//上传文件
        echo "上传文件失败";
			exit;
    }
        //将图片存入数据库       
    $sql="insert into file_url(url,product,md5,create_time) values('".$url."','".$product."','".$md5file."','".$today."')";
    $db->Execute($sql);
    $db->CloseDB();
    echo $url;
?>



分享到:
评论

相关推荐

    silverlight 文件上传例子(附源码)

    在"silverlight 文件上传例子(附源码)"中,我们可以学习到以下几个关键知识点: 1. **Silverlight控件**:首先,你需要在XAML文件中定义一个Silverlight控件,这个控件通常会包含一个或多个输入元素,如`...

    PHP编程的几十个例子 (附图片+源码)

    本文将围绕"PHP编程的几十个例子 (附图片+源码)"这个主题,深入探讨PHP5与MySQL开发技术中的关键知识点。 首先,PHP5是PHP语言的一个重要版本,它引入了许多新特性和改进,比如对象模型的增强、错误处理机制的改进...

    PHP实例开发源码—个人博客网站源码.zip

    如果博客允许用户上传图片或附件,源码中会包含文件上传的处理逻辑,包括文件类型检查、大小限制、重命名和保存路径等。 8. URL路由: 为了创建友好的URL,源码可能会包含URL路由规则,将用户请求映射到对应的...

    基于PHP的在线文档管理系统源码.zip

    【标题】"基于PHP的在线文档管理系统源码.zip"是一个包含源代码的压缩包,它提供了用PHP语言构建的在线文档管理系统的实现。这个系统旨在帮助用户存储、组织、搜索和共享各种类型的文档,实现云端的文档管理和协作。...

    php经典文件上传标准示例源码

    本示例提供了PHP经典...这个经典的PHP文件上传示例提供了完整的文件上传流程,可以帮助开发者理解和实现自己的文件上传功能。在实际项目中,可以根据需求进行定制和扩展,例如添加数据库记录、设置不同的权限控制等。

    Android应用源码45套安卓源码合集.zip

    Android应用源码实现动态交叉布局.rar Android应用源码小说翻页效果源码.rar Android应用源码广告轮播效果源码.rar Android应用源码强大的统计图表库.rar Android应用源码微享,微信分享实例.rar Android应用源码有...

    关于文件上传的例子

    我们可以通过博客链接(虽然这里提供的链接不可点击,但通常这类链接会指向一个详细的技术解释)来了解实现文件上传的具体步骤和技术。标签“源码”和“工具”提示我们,这可能涉及到具体的编程代码和可能使用的辅助...

    PHP实例开发源码—PHP+Ajax无刷新文件上传代码.zip

    在本压缩包“PHP实例开发源码—PHP+Ajax无刷新文件上传代码.zip”中,包含了一个使用PHP和Ajax技术实现的无刷新文件上传的示例。这种技术的应用旨在提高用户体验,用户可以在不刷新整个页面的情况下完成文件上传,极...

    PHP实现上传多文件示例代码

    PHP实现多文件上传功能需要对`$_FILES`全局数组有深刻理解,能够合理地处理多文件上传中的各种逻辑,包括但不限于文件信息的构建、上传错误处理、文件类型和大小的校验、文件真实性的验证,以及文件的最终保存等。...

    flash+PHP上传文件的例子

    使用flash结合php上传文件的例子,原理很简单,看一下源码就知道了,使用传统的html,要达到ajax效果,需要编写一堆的js代码,而且兼容性比较差,用flash结合php,很容易就可以做出来,而且上传控件可以自己随意去...

    极简云商业版系统源码 已经开源

    后台发信邮箱里填就对了 实在不会配置邮箱的 可以下载网盘里的reg.php 把reg.php上传源码里的user目录 之后注册就不需要去发送邮箱 只要填固定验证码 php7.0 mysql5.6+ 导入数据库 修改数据库文件config.php 后台...

    200个php源码

    3. **文件与目录操作**:包括读写文件、目录管理、上传下载等功能的实现。 4. **错误与异常处理**:理解如何捕获并处理运行时错误和异常,以确保程序的健壮性。 5. **会话管理**:用于跟踪用户状态,例如登录状态...

    POST文件上传例子-易语言

    这里我们主要探讨的是使用易语言实现POST文件上传的例子。易语言是一种中国本土开发的、以中文编程为特色的编程语言,旨在降低编程难度,让更多人能够参与到编程中来。 POST文件上传通常涉及到客户端(用户端)与...

    一套基于PHP+MYSQL实现支持动态、伪静态、生成HTML模式的七夜图片管理系统源码

    【标题】中的“一套基于PHP+MYSQL实现支持动态、伪静态、生成HTML模式的七夜图片管理系统源码”指的是一个开源的图片管理系统,它利用PHP编程语言与MySQL数据库相结合,构建了一个功能完善的平台。该系统具备动态...

    PHP实例开发源码—在线MySQL管理工具php单文件版.zip

    由于是单文件版本,用户只需将这个PHP文件上传到支持PHP的服务器上,即可开始使用,无需安装额外的软件或配置复杂的环境。 【标签】"PHP"表明这个工具的核心是PHP编程语言,PHP是一种广泛使用的开源脚本语言,尤其...

    京华志 源码多php教程 (中文手册+例子).

    例如,你可以看到如何使用PHP连接数据库并执行SQL查询,如何创建动态网页,如何使用PHP处理表单数据,以及如何实现文件上传下载功能等。这些实践性的例子对于提升编程能力至关重要。 在学习过程中,【京华志】的这...

    php上传图片源码

    表单提交后,PHP将处理文件上传。 在PHP部分,首先检查请求方法是否为POST,这表明表单已经提交。接着,使用 `is_uploaded_file()` 检查文件是否已成功上传到临时目录。如果文件不存在,会显示错误信息并结束脚本。...

    细说PHP 配套源码

    4. PHP文件系统操作:PHP可以用来读写文件、目录操作、文件上传下载等。源码中可能会涉及这些功能的实现,让你掌握文件系统编程的基本技能。 5. PHP表单处理:Web开发中,表单处理是必不可少的一部分。源码可能会...

    PHP和MySQL Web开发第4版pdf以及源码

    9.5.5 使用GRANT和REVOKE的例子 9.6 创建一个Web用户 9.7 使用正确的数据库 9.8 创建数据库表 9.8.1 理解其他关键字的意思 9.8.2 理解列的类型 9.8.3 用SHOW和DESCRIBE来查看数据库 9.8.4 创建索引 9.9 理解...

Global site tag (gtag.js) - Google Analytics