PHP - 服务文件出错

时间:2016-09-09 10:54:31

标签: php

这是我的代码。我写这个是为了提供mp3,图像和视频。收到Mp3文件并且运行良好。图像和视频已收到但已损坏。我是php的新手。

<?php
if( !empty( $_GET['type']|| $_GET['name']|| $_GET['ext'] ) ) {
  // check if user is logged
  if(true) {
    $type = preg_replace( '#[^-\w]#', '', $_GET['type'] );
    $name = $_GET['name'] ;
    $file = "{$_SERVER['DOCUMENT_ROOT']}/cont/{$type}/{$name}";
    echo $file;

    if (file_exists($file)) {
      header('Content-Description: File Transfer');
      header('Content-Type: application/octet-stream');
      header('Content-Disposition: attachment; filename="'.basename($file).'"');
      header('Expires: 0');
      header('Cache-Control: must-revalidate');
      header('Pragma: public');
      header('Content-Length: ' . filesize($file));
      readfile($file);
      exit;
    }
  }
}
die( "ERROR: invalid file or you don't have permissions to download it." );

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

在实际响应之前有一个echo $file;并不属于那里。 除了文本本身,PHP还会在第一次调用header()时产生警告。这两个都到达文件头之前的最终内容,并使大多数文件读取器无法识别浏览器收到的数据。