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

346 篇文章 0 订阅
317 篇文章 0 订阅

http://blog.csdn.net/liushuwei0224/article/details/8590728

[置顶] PHP实现文件上传的例子(附详细源码)                    

7307人阅读 评论(2) 收藏 举报
本文章已收录于:
分类:

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

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

一、功能:

A:文件分类上传

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

C:点击图片,查看详细

二、HTML代码:

  1. <div id="container">  
  2.     <fieldset>  
  3.         <legend class="img"><img width="100%" src="css/logo.png" /></legend>  
  4.         <form action="" method="post" name="myform" id="myform" onsubmit="return false" enctype="multipart/form-data">  
  5.             <strong>亲,请选择你要上传的文件</strong>  
  6.             <div class="file"><input type="file" id="fileToUpload" name="fileToUpload" /></div>  
  7.             <select id="product">  
  8.                     <option value="" <?php if(empty($pname)){ echo "selected" ;} ?> >请选择产品</option>  
  9.                     <option value="tuan" <?php if($pname == '2000tuan'){ echo "selected" ;} ?> ></option>              
  10.                 </select>  
  11.                 <button id="postBtn" >Submit</button>  
  12.         </form>  
  13.         <div id="info"></div>  
  14.         <div style="position:relative; top:40px; left:20px;">  
  15.             <a id="loading" style="display:none"><img width="10%" src="css/loading.gif" /></a>  
  16.         </div>  
  17.         <a href="#" id="img_link" target="_blank">  
  18.             <div id="img_url">buding</div>  
  19.             <br/>  
  20.             <img class="preview" id="preview" src="" style="display:none;margin:0 auto" />  
  21.         </a>  
  22.     </fieldset>  
  23. </div>  
	<div id="container">
		<fieldset>
			<legend class="img"><img width="100%" src="css/logo.png" /></legend>
			<form action="" method="post" name="myform" id="myform" οnsubmit="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代码:

  1. <script type="text/javascript">  
  2.     $('#postBtn').click(function(){  
  3.         $('#preview').hide();  
  4.         $('#img_url').hide();  
  5.         $('#loading')  
  6.             .ajaxStart(function(){  
  7.                 $(this).show();  
  8.             })  
  9.             .ajaxComplete(function(){  
  10.                 $(this).hide();  
  11.             });  
  12.         if($('#fileToUpload').val() == ""){  
  13.             $('#info').html("亲,还没选择文件呢");  
  14.             var jObject={"Url":"","Height":413};  
  15.             var jString=JSON.stringify(jObject);  
  16.             window.parent.postMessage(jString,'*');  
  17.             return false;  
  18.         }   
  19.         if($('#product').val() == ""){  
  20.             $('#info').html("亲,还没选择产品呢");  
  21.             $('#info').css("color","#e9af32");  
  22.             var jObject={"Url":"","Height":413};  
  23.             var jString=JSON.stringify(jObject);  
  24.             window.parent.postMessage(jString,'*');  
  25.             return false;  
  26.         }   
  27.         var val = $('#product').val();  
  28.         $.ajaxFileUpload({    
  29.             url:'ajaxupload.php',  
  30.             secureuri:false,  
  31.             fileElementId:'fileToUpload',  
  32.             dataType: 'text',  
  33.             data:{product:val},  
  34.             success: function (data, status)  
  35.             {  
  36.                 if(data.search(/http:\/\//i) < 0 ){  
  37.                     $('#info').html(data);  
  38.                     var jObject={"Url":"","Height":413};  
  39.                     var jString=JSON.stringify(jObject);  
  40.                     window.parent.postMessage(jString,'*');  
  41.                 }else{  
  42.                     $('#info').html("您上传的文件为:<br/>");  
  43.                     $('#preview').attr("src",data);  
  44.                     $('#img_link').attr("href",data);  
  45.                     $('#img_url').html(data);  
  46.                     $('#preview').show();  
  47.                     $('#img_url').show();  
  48.                     $('#preview').load(function(){  
  49.                         var imgH=$('#preview').height();  
  50.                         var jObject={"Url":data,"Height":imgH+228,"oid":"<?php echo @$_REQUEST['oid']; ?>"};  
  51.                         var jString=JSON.stringify(jObject);  
  52.                         window.parent.postMessage(jString,'*');  
  53.                     });  
  54.                 }  
  55.             },  
  56.             error: function (data, status, e){    
  57.                 $('#info').html(data+e);  
  58.             }  
  59.         });  
  60.     });  
  61. </script>  
	<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代码

  1. <?php  
  2. require_once('config.php');  
  3. if(empty($_FILES) || empty($_REQUEST)){  
  4.     header('location:imgupload.php');  
  5.     exit;  
  6. }  
  7.   
  8. array_push($_FILES$_REQUEST);  
  9.   
  10. $filename = 'fileToUpload';  
  11. $product = @$_FILES[0]['product'];  
  12. $today = date("Y-m-d");  
  13. $time = date("YmdHis");   
  14. $year = date("Y");  
  15. $month = date("m");  
  16. $day = date("d");  
  17. $img_path = $product.'/'.$year.'/'.$month.'/'.$day.'/';  
  18. $destination_dir = ROOT_PATH.'/pic/'.$img_path.'/';  
  19.   
  20. if(!is_uploaded_file($_FILES[$filename]['tmp_name'])){//验证上传文件是否存在  
  21.     echo "请选择你想要上传的图片";  
  22.     exit;  
  23. }  
  24.       
  25. if($product == "") {//选择产品  
  26.     echo "请选择产品";  
  27.     exit;  
  28. }  
  29.     $files = $_FILES[$filename];  
  30.      
  31.     if($max_file_size < $files['size']){//判断文件是否超过限制大小  
  32.         echo "图片太大了,传个小点的吧(<=2MB)";  
  33.         exit;  
  34.     }  
  35.           
  36.     if(!file_exists($destination_dir)) {//判断上传目录是否存在,不存在则创建一个.  
  37.         if(!mkdir($destination_dir,0777,true)) {  
  38.             echo "创建目录 {".$destination_dir."} 失败<可能是权限问题>";  
  39.             exit;  
  40.         }  
  41.     }  
  42.     $type = pathinfo($files['name']);  
  43.     $type = strtolower($type["extension"]);  
  44.     $type =".".$type;  
  45.     $tmp_name = $files['tmp_name'];  
  46.     $md5file = md5_file($tmp_name);//生成md5文件  
  47.     $new_name =$md5file.$type;  
  48.     $img_relat_path = $img_path.$new_name;  
  49.     $img_abs_path = $destination_dir.$new_name;  
  50.           
  51.     $url = IMG_URL.$img_relat_path;  
  52.   
  53.     //判断数据库中图片是否存在  
  54.     $sql="select url from file_url where md5 = '".$md5file."'";  
  55.     $res=$db->getOne($sql);  
  56.     if($res) {  
  57.         echo $res['url'];  
  58.         exit;   
  59.     }        
  60.      
  61.     if(!move_uploaded_file ($files['tmp_name'], $img_abs_path)) {//上传文件  
  62.         echo "上传文件失败";  
  63.             exit;  
  64.     }  
  65.         //将图片存入数据库         
  66.     $sql="insert into file_url(url,product,md5,create_time) values('".$url."','".$product."','".$md5file."','".$today."')";  
  67.     $db->Execute($sql);  
  68.     $db->CloseDB();  
  69.     echo $url;  
  70. ?>  
<?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;
?>



7
3
 
 
我的同类文章


参考知识库

更多资料请参考:
猜你在找
ArcGIS for JavaScript
iOS8-Swift开发教程
MySQL数据库管理
【中国PHP教育大牛高洛峰】亲授php教程
PDF神器-Adobe Acrobat Pr
PHP实现文件上传例子
SpringMVC+BUI实现文件上传附详解源码下载
#舍得Share#php开发笔记-使用curl查看网页源码自动跳转显示头信息显示通信过程发送表单信息文件上传Referer字段User Agent
简单的PHP文件上传例子
php文件上传的例子


查看评论
2楼 超洋气大叔 2016-03-23 18:23发表 [回复] [引用] [举报]
学习了,哈哈。。
1楼 hkemax 2013-03-26 09:55发表 [回复] [引用] [举报]
希望加入URL远传图片上传....




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值