澳门新葡萄京官网首页php实现文件下载简单示例(代码实现文件下载)

? header(content-type:text/html; charset=utf-8);
$file_name=$_GET[‘name’]; //服务器的真实文件名
$file_realName=urldecode($_GET[‘real’]);
//数据库的文件名urlencode编码过的$file_dir=upload/;$file =
fopen($file_dir . $file_name,r); // 打开文件 // 输入文件标签header(
Pragma: public );header( Expires: 0 ); Header(Content-type:
application/octet-stream);Header(Accept-Ranges:
bytes);Header(Accept-Length: .filesize($file_dir .
$file_name));Header(Content-Disposition: attachment; filename= .
iconv(UTF-8,GB2312//TRANSLIT,$file_realName));// 输出文件内容echo
fread($file,filesize($file_dir . $file_name));fclose($file);exit;?

例1

 代码如下

复制代码 代码如下:

function download($file_url,$new_name=”){
 if(!isset($file_url) || trim($file_url)==”){
  return ‘500’;
 }
 if(!file_exists($file_url)) { //检查文件是否存在
  return ‘404’;
 }
 $file_name=basename($file_url);
 $file_type=explode(‘.’,$file_url);
 $file_type=$file_type[count($file_type)-1];
 $file_name=trim($new_name==”)?$file_name:urlencode($new_name).’.’.$file_type;
 $file_type=fopen($file_url,’r’);
//打开文件
 //输入文件标签
 header(“Content-type: application/octet-stream”);
 header(“Accept-Ranges: bytes”);
 header(“Accept-Length: “.filesize($file_url));
 header(“Content-Disposition: attachment; filename=”.$file_name);
 //输出文件内容
 echo fread($file_type,filesize($file_url));
 fclose($file_type);
}

public function downloads($name){
$name_tmp = explode(“_”,$name);
$type = $name_tmp[0];
$file_time = explode(“.”,$name_tmp[3]);
$file_time = $file_time[0];
$file_date = date(“Y/md”,$file_time);
$file_dir = SITE_PATH.”/data/uploads/$type/$file_date/”; 

例2

if (!file_exists($file_dir.$name)){
 header(“Content-type: text/html; charset=utf-8”);
 echo “File not found!”;
 exit;
} else {
 $file = fopen($file_dir.$name,”r”);
 Header(“Content-type: application/octet-stream”);
 Header(“Accept-Ranges: bytes”);
 Header(“Accept-Length: “.filesize($file_dir . $name));
 Header(“Content-Disposition: attachment; filename=”.$name);
 echo fread($file, filesize($file_dir.$name));
 fclose($file);
}
}

以下php代码可以解决:
 

示例2:代码实现文件下载

 代码如下

一般实现下载都是调用url来下载,但是遇到ie能识别打开的文件就不能用这种方式了,比如下载一个图片、html网页等,这时就需要编程来实现,以下php代码可以解决:

<?
if( empty($_GET[‘FileName’])|| empty($_GET[‘FileDir’])||
empty($_GET[‘FileId’])){
    echo'<script> alert(“非法连接 !”); location.replace
(“index.php”) </script>’; exit();
}
$file_name=$_GET[‘FileName’];
$file_dir=$_GET[‘FileDir’];
$FileId=$_GET[‘FileId’];
$file_dir = $file_dir.”/”;
if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在 
  echo   “文件找不到”; 
  exit;   
  }   else   { 
$file = fopen($file_dir . $file_name,”r”); // 打开文件
// 输入文件标签
Header(“Content-type: application/octet-stream”);
Header(“Accept-Ranges: bytes”);
Header(“Accept-Length: “.filesize($file_dir . $file_name));
Header(“Content-Disposition: attachment; filename=” . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit();
}
?>

复制代码 代码如下:

直接下载文件

<?
if( empty($_GET[‘FileName’])|| empty($_GET[‘FileDir’])||
empty($_GET[‘FileId’])){
    echo'<script> alert(“非法连接 !”); location.replace
(“index.php”) </script>’; exit();
}
$file_name=$_GET[‘FileName’];
$file_dir=$_GET[‘FileDir’];
$FileId=$_GET[‘FileId’];
$file_dir = $file_dir.”/”;
if   (!file_exists($file_dir.$file_name))   {   //检查文件是否存在 
  echo   “文件找不到”; 
  exit;   
  }   else   { 
$file = fopen($file_dir . $file_name,”r”); // 打开文件
// 输入文件标签
Header(“Content-type: application/octet-stream”);
Header(“Accept-Ranges: bytes”);
Header(“Accept-Length: “.filesize($file_dir . $file_name));
Header(“Content-Disposition: attachment; filename=” . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit();
}
?>

 代码如下

<?php  
$file = get_file_address();//
文件的真实地址(支持url,不过不建议用url)  
 
if (file_exists($file)) {  
    header(‘Content-Description: File Transfer’);  
    header(‘Content-Type: application/octet-stream’);  
    header(‘Content-Disposition: attachment;
filename=’.basename($file));  
    header(‘Content-Transfer-Encoding: binary’);  
    header(‘Expires: 0’);  
    header(‘Cache-Control: must-revalidate, post-check=0,
pre-check=0’);  
    header(‘Pragma: public’);  
    header(‘Content-Length: ‘ . filesize($file));  
    ob_clean();  
    flush();  
    readfile($file);  
    exit;  
}  
?>

小提示,header函数不只是可以实现文件下载,他还有很多的功能哦,如发送404,301等等状态信息都是可以的哦。

注意:在使用header之前我们必须在header之前没有任何输出,否则就会报错。

发表评论

电子邮件地址不会被公开。 必填项已用*标注