文件上传下载表单:
<!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');
?>
运行结果: