使用PHP下载文件并获取文件内容

使用PHP下载文件并获取文件内容,php,file-get-contents,Php,File Get Contents,我想从存储库下载文件,我有下面的代码,文件被找到了,但什么也没发生 我没有错 我暂时使用测试值,但稍后将使用GET 目标是直接加载文件: $dossier = "../private/cartes_identites/test/"; $filename = "test.png"; $file = $dossier.$filename; //First, see if the file exists if (!is_file($file)) { die("<b>404 File n

我想从存储库下载文件,我有下面的代码,文件被找到了,但什么也没发生

我没有错

我暂时使用测试值,但稍后将使用GET

目标是直接加载文件:

$dossier = "../private/cartes_identites/test/";
$filename = "test.png";

$file = $dossier.$filename;

//First, see if the file exists
if (!is_file($file)) { die("<b>404 File not found!</b>"); }
else echo "file exists";

$ext = strrchr( $filename, "." );

switch( $ext ) {
    case ".zip": $type = "application/zip"; break;
    case ".txt": $type = "text/plain"; break;
    case ".pdf": $type = "application/pdf"; break;
    case('gif') : $type = "image/gif";break;
      case('pnggif') : $type = "image/png";break;
         case('jpg') : $type = "image/jpeg";break;


    default: $type = "application/octet-stream"; break;


}

echo $ext;

// Constitution de l'header suivant le type
header("Content-Description: File Transfer");
header("Content-Type: $type\n");
header("Content-Transfer-Encoding: binary");
header("Content-disposition: attachment; filename=$filename");
header("Content-Length: ".filesize( $dossier.$filename ) );


// Lecture et Affichage
file_get_contents( $dossier.$filename );
?>
$dossier=“../private/cartes_identies/test/”;
$filename=“test.png”;
$file=$dossier.$filename;
//首先,查看文件是否存在
如果(!is_file($file)){die(“找不到404文件!”);}
else echo“文件存在”;
$ext=strrchr($filename,“.”);
交换机($ext){
case“.zip”:$type=“application/zip”中断;
case“.txt”:$type=“text/plain”中断;
case“.pdf”:$type=“application/pdf”中断;
大小写('gif'):$type=“image/gif”中断;
大小写('pnggif'):$type=“image/png”中断;
大小写('jpg'):$type=“image/jpeg”中断;
默认值:$type=“应用程序/八位字节流”中断;
}
echo$ext;
//头型构造
标题(“内容描述:文件传输”);
标题(“内容类型:$Type\n”);
标题(“内容传输编码:二进制”);
标题(“内容处置:附件;文件名=$filename”);
标题(“内容长度:“.filesize($dossier.$filename));
//演讲与演讲
文件获取内容($dossier.$filename);
?>

目前,您只是通过
文件获取内容来读取文件的内容,但从未将内容交付给客户端

或者像这样向用户回显文件的内容

/。。。
标题(“内容长度:“.filesize($dossier.$filename));
//演讲与演讲
回显文件获取内容($dossier.$filename);
?>
或者您也可以使用,而不是像下面这样使用
文件\u get\u contents

/。。。
标题(“内容长度:“.filesize($dossier.$filename));
//演讲与演讲
readfile($dossier.$filename);
?>

另外,您应该去掉
echo$ext并仅回显文件内容,否则可能看起来文件已损坏。

您获得文件内容,然后?你必须回显它。是的,对不起。。。。这就是我得到的:因为它显然是PDF而不是PNG。我对PNG也有同样的想法。。。。我试着用pdf。。。但是我的代码应该可以使用任何格式?case('pnggif'):$type=“image/png”;中断;//修这条线