PHP实现文件上传下载

文件上传下载表单:

<!DOCUMENT html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http
://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
	<title>文件上传下载</title>
	<style type="text/css">
		ul li{margin:0;padding:0;}
		form{margin:40px 30px 0;}
		form li{list-style:none;padding:5px 0;}
		form li label{float:left;width:70px;text-align:right}
		form li a{font-size:12px;color:#999;text-decoration:none}
		.login_btn{border:none;background:#01A4F1;color:#fff;font-size:14px;font-weight:bold;height:28px;line-height:28px;padding:0 10px;cursor:pointer;}
		form li img{vertical-align:top}
	</style>

</head>
<body>
<form enctype="multipart/form-data" action="upload.php" method="POST"> 
	<fieldset>
		<legend>文件上传</legend>
		<ul>
			<li>
				<input type="hidden" name="max_file_size" value="30000"/>选择文件:
			</li>
			<li>
				<input type="file" name="userfile" />
			</li>
			<li>
				<input type="submit" value="上传文件" />
			</li>
		</ul>
	</fieldset>
</form>
<form enctype="multipart/form-data" action="download.php" method="POST"> 
	<fieldset>
		<legend>文件下载</legend>
		<ul>
			<li>
				<input type="hidden" name="max_file_size" value="30000"/>选择文件:
			</li>
			<li>
				<input type="file" name="userfile1" />
			</li>
			<li>
				<input type="submit" value="下载文件" />
			</li>
		</ul>
	</fieldset>
</form>
</body>
</html>

文件上传处理程序:

<?php
	//判断文件上传到临时目录是否出错,如果出错则输出错误信息并退出
	if($_FILES['userfile']['error']>0)
	{
		$error_msg = '上传错误:';
		switch($_FILES['userfile']['error'])
		{
			case 1:
				$error_msg.="文件大小超出了php.ini中upload_max_filesize的值";
			break;
			case 2:
				$error_msg.="文件大小超出了表单中max_file_size选项指定的值";
			break;
			case 3:
				$error_msg.="文件只有部分被上传";
			break;
			case 4:
				$error_msg.="没有文件被上传";
			break;
			case 6:
				$error_msg.="找不到临时文件";
			break;
			case 7:
				$error_msg.="文件写入失败";
			break;
			default:
				$error_msg.="位置错误";
			break;
		}
		echo $error_msg;
		exit;
	}
	//上传到临时目录成功,将其复制到脚本文件所在的uploads文件夹中。
	
	if(is_uploaded_file($_FILES['userfile']['tmp_name']))
	{
		if(!($file=iconv('UTF-8','GB2312',$_FILES['userfile']['name'])))
		{
			echo '转换失败';
			exit;
		}
		$destination = 'uploads/'.$file;
		if(move_uploaded_file($_FILES['userfile']['tmp_name'],$destination))
		{
			echo "upload success";
			//跳转到用户首页
			header('refresh:3;url=form.html');
		}
	}

?>

运行结果:


文件下载处理程序:

<?php
	header('Content-Type:text/html;charset=utf-8');
	//define('ROOT_PATH',dirname(__FILE__));
	//定义下载函数
	$file_path=$_FILES['userfile1']['name'];
	function downfile($file_path)
	{
		//对可能出现的中文名称进行转码
		$file_path=iconv('UTF-8','GB2312',$file_path);
		echo $file_path;
		//判断文件是否存在
		if(!file_exists($file_path))
		{
			exit('file not exist!');
		}
		//获取文件名称,不包含路径
		$file_name = basename($file_path);
		//获取文件大小
		$file_size = filesize($file_path);
		//只读的方式打开文件
		$fp = fopen($file_path,'r');
		//这两个响应头用于告诉浏览器不要直接在浏览器中解析该文件,而是将文件以下载的方式打开
		header("Content-type:application/octet-stream");
		header("Content-Disposition:attachment;filename={$file_name}");
		$buffer = 1024;
		$file_count = 0;
		while(!feof($fp)&&($file_size-$file_count)>0)
		{
			$file_data = fread($fp,$buffer);
			$file_count+=$buffer;
			echo $file_data;
		}
		fclose($fp);
	}
	downfile($file_path);
	//跳转到用户首页
	header('refresh:3;url=form.html');
?>
运行结果:





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值