06
2013-03

如何用PHP实现:点击图片文件或其他文件,直接出现下载提示?

直接上代码:

<?php
/*
 *   @file        : download.php
 *   @function    : 用PHP实现文件下载功能(访问 http://yoursite.com/download.php?file_id=5)
*/
require_once 'xmphp/init.php';//全站配置文件
require_once XMPHP.'/smarty.php';//smarty功能
require_once XMPHP.'/mysql.php';//mysql功能
$file_id = isset($_GET['file_id']) ? intval($_GET['file_id']) : 0;
if($file_id<1)
{
    exit('没有这个文件');
}
$sql = "SELECT  `file`,`file_name` FROM `file` WHERE 1 "; //file是存放在服务器上的文件名(英文的);file_name是中文名,保存在电脑上使用的文件名
$sql .= "AND  `file_id`= '{$file_id}' ";
$res = $db->getRow($sql);
download(ROOT_PATH.'/upload/'.$res['file'], $res['file_name']);//ROOT_PATH是你的网站根目录,这里假设你要下载的文件,放在网站根目录下的upload目录中。
//下载文件,$FilePath:文件路径(完整的绝对路径),$FileName:文件名称(下载时保存的文件名称,可以用中文的),$type提供两种下载方式
function download($FilePath, $FileName, $type=1)
{
    if($type == 1)
    {
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
        header("Content-Type: application/force-download");
        header( "Content-Disposition: attachment; filename=".$FileName);
        header( "Content-Description: File Transfer");
        @readfile($FilePath);
    }
    if($type == 2)
    {
        $filesize = filesize($FilePath);
        $imagesize = getimagesize($FilePath);
        $filetype = $imagesize['mime'];
        ob_end_clean();
        header('Cache-control: max-age=31536000');
        header('Expires: '.gmdate('D, d M Y H:i:s', time() + 31536000).' GMT');
        header('Content-Encoding: none');
        header('Content-Disposition: attachment; filename='.$FileName);
        header('Content-Type: '.$filetype);
        @$fp = fopen($FilePath, 'rb');
        @flock($fp, 2);
        $file = @fread($fp, $filesize);
        @fclose($fp);
        echo $file;
    }
}
?>

注:请将代码中的一些文件的路径,改为你自己的文件路径


除非注明,文章均为史亚永原创,欢迎转载!转载请注明本文地址,谢谢。

本文地址:http://www.shiyayong.cn/post/php-download.html

评论列表:

4  人初油  2013-3-13 15:04:14 回复该留言  IP:111.224.186.223
自己的文件路径



人初油
3  单钰彤  2013-3-7 21:01:25 回复该留言  IP:117.136.14.103
貌似天书一样。呵呵!
  茶馆老板  2013-3-11 19:55:56 回复该留言  IP:106.3.103.175
对于不懂代码的人来说,可能就是天书,嘿嘿,没事,看得多了就好了
茶馆老板
  茶馆老板  2013-3-11 20:33:12 回复该留言  IP:106.3.103.175
没事,慢慢学习
茶馆老板
单钰彤
2  夏日博客  2013-3-6 21:38:52 回复该留言  IP:125.33.251.82
这个类库方法不错,只是嵌套的全站配置源码无法看到,这是哪个开源的??
  茶馆老板  2013-3-11 19:53:57 回复该留言  IP:106.3.103.175
这个不是开源的啊,都是自己写的啊,对了你们公司在招人吗?
茶馆老板
  茶馆老板  2013-3-11 20:33:04 回复该留言  IP:106.3.103.175
不是开源的啊
茶馆老板
夏日博客
1  买衣服  2013-3-6 19:19:09 回复该留言  IP:114.85.43.15
写的很深奥。很专业。知识我要慢慢的学了,因为我不懂代码、哈哈哈。支持你的分享。
  茶馆老板  2013-3-11 19:52:29 回复该留言  IP:106.3.103.175
没事,不懂可以慢慢学习嘛
茶馆老板
  茶馆老板  2013-3-11 20:32:41 回复该留言  IP:106.3.103.175
不懂代码只要肯耐心看,看得多了,慢慢就行了
茶馆老板
买衣服

发表评论:

(设置个性头像)

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

无觅相关文章插件,快速提升流量