1.文件下载
function fileDown($file_name,$file_sub_dir){
$file_name=iconv("utf-8","gb2312",$file_name);
//$file_sub_dir的格式是/XXX/XXX/
$file_path=$_SERVER['DOCUMENT_ROOT'].$file_sub_dir.$file_name;
//先判断一下,文件的是否存在
if(!file_exists($file_path)){
echo "文件不存在";
return;
}
//打开文件,文件到内存
$fp=fopen($file_path,"r");
//获取文件大小
$file_size=filesize($file_path);
//以数据流的形式返回
header("Content-type: application/octet-stream");
//以字节为单位
header("Accept-Ranges: bytes");
//返回文件的大小
header("Accept-Length: $file_size");
//文件下载的依赖,弹出对话框,对应的文件名
header("Content-Disposition: attachment; filename=".$file_name);
//每次传送的数据大小
$per=1024;
while(!feof($fp)){
//读取文件,并发送数据回请求端
$file_data=fread($fp,$per);
echo $file_data;
}
//关闭文件
fclose($fp);
}
$file_name="index.jpg";
$file_sub_dir="/http/down/";
fileDown($file_name,$file_sub_dir);
2.文件上传
//print_r($_FILES);
$file_name=$_FILES['myfile']['tmp_name'];
$file_name=iconv("utf-8", "gb2312", $file_name);
//Array ( [myfile] => Array ( [name] => [type] => [tmp_name] => [error] => 4 [size] => 0 ) )
//判断文件大小$_FILES['myfile']['size']
//判断文件类型$_FILES['myfile']['type'];
//解决不同用户上传相同文件名覆盖,按用户ID生成一个文件夹
// if(is_uploaded_file($file_name)){
// $move_path="D:\\code\\php\\file\\upload\\".$_FILES['myfile']['name'];
// if(move_uploaded_file($file_name, $move_path)){
// echo $_FILES['myfile']['name']."上传成功";
// }else{
// echo "上传失败";
// }
// }else{
// echo "上传失败";
// }
//解决同一用户上传相同文件名覆盖,改文件名
if(is_uploaded_file($file_name)){
$true_name=time().rand(1,1000).substr($_FILES['myfile']['name'],strrpos($_FILES['myfile']['name'], '.'));
$move_path=$_SERVER['DOCUMENT_ROOT']."/file/upload/".$true_name;
if(move_uploaded_file($file_name, $move_path)){
echo $_FILES['myfile']['name']."上传成功";
}else{
echo "上传失败";
}
}