我知道有足够的方法可以在抛出常规file_get_contents
之前检查网址是否存在,但有一个问题。所有人都试图请求文件,除了真假外,我什么也得不到。
当处理只能被调用一次的URL时(例如,如果他们有一个只能使用一次以避免重复攻击的授权令牌)那么我真的无法检查文件是否存在并再次请求获取实际输出
所以基本上我需要一种调用URL的方法,如果它返回它以某种方式可用然后给我输出,但如果不是不给我一个错误,但只返回false。
答案 0 :(得分:0)
通常,您可以执行HTTP HEAD请求以获取标题的预览。
答案 1 :(得分:0)
$fd = @ fopen('url', 'rb');
if ($fd) {
fclose($fd);
$contents = file_get_contents('url');
}
UPD:
你应该写这样的东西(例如控制器的动作):
...
public function download()
{
// chek auth and access rights
// get and sanitize key
// check existence of remote file
// check key (try get available from DB)
// get contents of existence file
// set key (in DB) has used and/or generate new unique key for this file
}
...