>  기사  >  백엔드 개발  >  php实现文件下传的例子(附详细源码)

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

WBOY
WBOY원래의
2016-06-13 12:53:52881검색

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

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

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

一、功能:

A:文件分类上传

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

C:点击图片,查看详细

二、HTML代码:

	<div id="container">
		<fieldset>
			<legend class="img"><img     style="max-width:90%" src="css/logo.png" alt=" php实现文件下传的例子(附详细源码) " ></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="" if echo> >请选择产品</option>
               		<option value="tuan" if echo> >团</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     style="max-width:90%" src="css/loading.gif" alt=" php实现文件下传的例子(附详细源码) " ></a>
			</div>
			<a href="#" id="img_link" target="_blank">
				<div id="img_url">buding</div>
				<br>
				<img  class="preview" id="preview" src=""   style="max-width:90%" alt=" php实现文件下传的例子(附详细源码) " >
			</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;
?>



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.