php 文件下载 以及 file_exists找不到文件的解决方案

链接:<a href="upload/file/download.php?filename=雨人工作室.doc" target="_blank" >点击下载</a>

其中php:

<?php

$filename = $_GET['filename'];

//从浏览器获取到的字符的编码是UTF-8,我们要用这个函数转换成GBK才能才本地找到这个文件

$filename = mb_convert_encoding($filename,'GBK','UTF-8');

echo $filename ."<br>";

if( empty($filename)){

    echo'<script> alert("非法连接 !"); location.replace ("index.php") </script>'; exit();

}



if   (!file_exists($filename))   {   //检查文件是否存在

    echo   "文件找不到";

    exit;

}   else   {

    $file = fopen($filename,"r"); // 打开文件

    // 输入文件标签

    Header("Content-type: application/octet-stream");

    Header("Accept-Ranges: bytes");

    Header("Accept-Length: ".filesize($filename));

    Header("Content-Disposition: attachment; filename=" . $filename);

    // 输出文件内容

    echo fread($file,filesize($filename));

    fclose($file);

    exit();

}

?>

总结:如果没有对浏览器传进来的文件地址进行转码(从UTF-8转成GBK),那么file_exists函数将找不到中文名字的文件。

你可能感兴趣的:(exists)