当前位置: 代码迷 >> PHP >> php文件上传与下载解决办法
  详细解决方案

php文件上传与下载解决办法

热度:35   发布时间:2016-04-28 17:43:37.0
php文件上传与下载
php文件上传可以用move_uploaded_file()函数 
但是文档没有介绍文件下载的方法 我也找不到 move_downloaded_file()函数
我想下载用move_uploaded_file() 让它从你上传的目录传到你指定的下载目录,这样感觉怪怪的.
哪位大哥分享下php文件下载的方法.
------解决思路----------------------
上传可以move_uploaded_file, 是因为上传的文件已经在服务器上
下载自然不能move_uploaded_file,因为文件是在服务器上的,你下载是要下载到客户端的。。。
最简单的方式<a href=" 文件路径">下载</a>
如果不想暴露文件地址。
可以用:
header("xxxxxxxxxx");
readfile("文件");
将文件内容吐给浏览器去下载。

下载的资料,google, baidu 一下,还是蛮多的。。
------解决思路----------------------

<?php  
$file = 'test.zip';  
$filename = '中文.zip';  
  
if(file_exists($file)){  
    $user_agent = $_SERVER['Http_User_agent'];  
    $encode_filename = rawurlencode($filename);  
  
    if(preg_match("/MSIE/", $user_agent)){  
        header('content-disposition:attachment; filename="'.$encode_filename.'"');  
    }else if(preg_match("/Firefox/", $user_agent)){  
        header("content-disposition:attachment; filename*=\"utf8''".$filename.'"');  
    }else{  
        header('content-disposition:attachment; filename="'.$filename.'"');  
    }  
    readfile($file);  
}  
?> 


下载。
------解决思路----------------------
引用:
Quote: 引用:


<?php  
$file = 'test.zip';  
$filename = '中文.zip';  
  
if(file_exists($file)){  
    $user_agent = $_SERVER['Http_User_agent'];  
    $encode_filename = rawurlencode($filename);  
  
    if(preg_match("/MSIE/", $user_agent)){  
        header('content-disposition:attachment; filename="'.$encode_filename.'"');  
    }else if(preg_match("/Firefox/", $user_agent)){  
        header("content-disposition:attachment; filename*=\"utf8''".$filename.'"');  
    }else{  
        header('content-disposition:attachment; filename="'.$filename.'"');  
    }  
    readfile($file);  
}  
?> 


下载。



下载文件的时候为什么要判断是那种浏览器(preg_match("/Firefox/", $user_agent)?
 header('content-disposition:attachment; filename="'.$encode_filename.'"');  
header('xxx')这句是有什么用,我去掉的时候readfile($file) 就把文件的内容显示在浏览器,也没有弹出下载框

设置文件头,当浏览器接收到头时,会激活文件下载对话框
  相关解决方案