php:在我自己的服务器上强制下载 - 检查文件是否存在?

时间:2010-08-05 22:33:44

标签: php

我在自己的服务器上使用强制下载脚本。 - 单击链接,文件提示下载。工作完美,但即使文件不存在,也可以下载为空文件。因此,如果我使用/folder/filexyz.txt设置链接,则会提示下载,并将空的txt文件下载到硬盘。

我目前正在使用此脚本:

header("Cache-Control: no-cache");
header("Expires: -1");
header("Content-Type: application/octet-stream;");
header("Content-Disposition: attachment; filename=\"" . basename($file) . "\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($file));
echo readfile($file);

$ file是我文件的完整路径,如:http://www.mydomain.com/folder1/folder2/folder/filexyz.txt

如何检查文件是否存在。如果它不存在则下载不应该提示,否则当然是。

3 个答案:

答案 0 :(得分:3)

您可以使用file_exists()来检查文件是否存在:)如果它没有发送404错误

header("HTTP/1.0 404 Not Found"); 

答案 1 :(得分:0)

您是否尝试过使用file_exists 1

bool file_exists ( string $filename )

答案 2 :(得分:-1)

您需要将LOCAL路径存储到$path中的文件而不是网址!

类似于Windows上的C:\path\to\somefile.txt或Linux上的/path/to/somefile.txt

也不要使用file_exists()而是使用is_file(),因为如果给定路径是目录而不是文件,file_exists也会返回true。