PHP 文件下载函数

下面是一段使用 PHP 进行服务器文件下载的函数,可以自己添加更多的文件类型。

 

// $file = "/folder/filename.ext";
function force_download($file) {
    // 截取文件扩展名
    $ext = explode(".", $file);
    switch($ext[sizeof($ext)-1]) {
        case 'jar': $mime = "application/java-archive"; break;
        case 'zip': $mime = "application/zip"; break;
        case 'jpeg': $mime = "image/jpeg"; break;
        case 'jpg': $mime = "image/jpg"; break;
        case 'jad': $mime = "text/vnd.sun.j2me.app-descriptor"; break;
        case "gif": $mime = "image/gif"; break;
        case "png": $mime = "image/png"; break;
        case "pdf": $mime = "application/pdf"; break;
        case "txt": $mime = "text/plain"; break;
        case "doc": $mime = "application/msword"; break;
        case "ppt": $mime = "application/vnd.ms-powerpoint"; break;
        case "wbmp": $mime = "image/vnd.wap.wbmp"; break;
        case "wmlc": $mime = "application/vnd.wap.wmlc"; break;
        case "mp4s": $mime = "application/mp4"; break;
        case "ogg": $mime = "application/ogg"; break;
        case "pls": $mime = "application/pls+xml"; break;
        case "asf": $mime = "application/vnd.ms-asf"; break;
        case "swf": $mime = "application/x-shockwave-flash"; break;
        case "mp4": $mime = "video/mp4"; break;
        case "m4a": $mime = "audio/mp4"; break;
        case "m4p": $mime = "audio/mp4"; break;
        case "mp4a": $mime = "audio/mp4"; break;
        case "mp3": $mime = "audio/mpeg"; break;
        case "m3a": $mime = "audio/mpeg"; break;
        case "m2a": $mime = "audio/mpeg"; break;
        case "mp2a": $mime = "audio/mpeg"; break;
        case "mp2": $mime = "audio/mpeg"; break;
        case "mpga": $mime = "audio/mpeg"; break;
        case "wav": $mime = "audio/wav"; break;
        case "m3u": $mime = "audio/x-mpegurl"; break;
        case "bmp": $mime = "image/bmp"; break;
        case "ico": $mime = "image/x-icon"; break;
        case "3gp": $mime = "video/3gpp"; break;
        case "3g2": $mime = "video/3gpp2"; break;
        case "mp4v": $mime = "video/mp4"; break;
        case "mpg4": $mime = "video/mp4"; break;
        case "m2v": $mime = "video/mpeg"; break;
        case "m1v": $mime = "video/mpeg"; break;
        case "mpe": $mime = "video/mpeg"; break;
        case "mpeg": $mime = "video/mpeg"; break;
        case "mpg": $mime = "video/mpeg"; break;
        case "mov": $mime = "video/quicktime"; break;
        case "qt": $mime = "video/quicktime"; break;
        case "avi": $mime = "video/x-msvideo"; break;
        case "midi": $mime = "audio/midi"; break;
        case "mid": $mime = "audio/mid"; break;
        case "amr": $mime = "audio/amr"; break;
        default: $mime = "application/force-download";
    }
    header('Content-Description: File Transfer');
    header('Content-Type: '.$mime);
    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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值