下载时接收空文件

时间:2018-03-13 21:46:49

标签: php

我正在尝试使用PHP通过URL传递路径和文件名来下载文件服务器,如下所示:

<a class="downloadBtn" style="float:left;" href="download_file.php?folder=<?php echo $codrepresentante.'&file='.$nomeArquivo ?>" >download</a>

然后我收到这个PHP文件:

<?php

$fileName = $_GET['file'];
$coisa=urldecode($fileName);

$path= "http://localhost/portal/boletos/".$_GET["folder"];
$filePath = $path.'/'.$coisa;
echo "caminho: ".$filePath;

if(file_exists($filePath)){
    // Define headers

    header("Content-Description: File Transfer");
    header("Content-Transfer-Encoding: binary");
    header("Content-Disposition: attachment; filename=".$coisa);
    header('Content-Type: application/octet-stream');
    header('Cache-Control: must-revalidate');
    header('Content-Length: ' . filesize($coisa));
    ob_clean();
    flush();
    // Read the file
    echo readfile($filePath);
    exit;
} else {
    echo 'The file does not exist.';
}
?>

但我总是得到空文件或The file does not exist响应。

我得到了$filePath变量,并在浏览器中用来查看路径是否错误,但是它有效,所以路径是正确的。

有人可以通过指出我犯了哪个错误来帮助我吗?

1 个答案:

答案 0 :(得分:2)

  

接收空文件

根据您向我们展示的代码,根本不应该进行任何下载。

  

echo&#34; caminho:&#34;。$ filePath;

您没有看到PHP向您报告的错误。

  

文件大小($ coisa)

这是文件名 - 而不是它的完整路径。

  

但我总是得到空文件或者文件不存在。&#39;

所以你不能获得任何下载,零长度或其他。

  

获取$ filePath变量并在浏览器中使用以查看路径是否错误

在浏览器中指定相对于文档根目录的路径 - 但在PHP代码中,路径应该相对于文件系统根目录。

你需要从

开始
  • 学习如何准确描述问题
  • 确保您捕获PHP告诉您的错误和警告消息
  • 为您的代码添加检测,以便在执行过程中捕获内部状态
  • 分解您要实现的目标部分并单独测试