当前访客身份:游客 [ 登录 | 加入开源中国 ]

代码分享

当前位置:
代码分享 » PHP  » 网络编程
WoodBunny

PHP判断网络文件存在

WoodBunny 发布于 2012年07月12日 11时, 10评/1970阅
分享到: 
收藏 +0
1
<无详细内容>
标签: <无>

代码片段(1) [全屏查看所有代码]

1. [代码]php验证网络文件存在     跳至 [1] [全屏预览]

方法一:

<?php
	$url = "http://http://github.codeigniter.org.cn/download/CodeIgniter_2.1.2.zip";
	$fileExists = @file_get_contents($url, null, null, -1, 1) ? true : false;
	echo $fileExists; //返回1,就说明文件存在。
?> 

方法二:

<?php
function check_remote_file_exists($url) {
	$curl = curl_init($url); // 不取回数据
	curl_setopt($curl, CURLOPT_NOBODY, true);
	curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET'); // 发送请求
	$result = curl_exec($curl);
	$found = false; // 如果请求没有发送失败
	if ($result !== false) {

		/** 再检查http响应码是否为200 */
		$statusCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
		if ($statusCode == 200) {
			$found = true;
		}
	}
	curl_close($curl);

	return $found;
}

$url = "http://github.codeigniter.org.cn/download/CodeIgniter_2.1.2.zip";
echo check_remote_file_exists($url); // 返回1,说明存在。

?>


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(10)

  • 1楼:hmly 发表于 2012-07-12 12:20 回复此评论
    file_get_contents或curl访问超时了你怎么办?
  • 2楼:开源中国董事会主席 发表于 2012-07-12 13:04 回复此评论
    晕 这是不可信的。你可以判断远程url地址是否存在,但不能判断远程文件是否存在。假设不考虑是否超时这个问题,而假设为都不会超时。即使你读取到了一个地址的内容,但也并不代表那个url地址 path 部分的文件真的存在啊
  • 3楼:whtoo 发表于 2012-07-12 17:02 回复此评论
    应该是 得到的 只是一个头响应把  这个时候 认为 存在文件 的确 不太严谨
  • 4楼:whtoo 发表于 2012-07-12 17:02 回复此评论
    应该是 得到的 只是一个头响应把  这个时候 认为 存在文件 的确 不太严谨
  • 5楼:voov 发表于 2012-07-12 17:11 回复此评论

    引用来自“腾勇”的评论

    晕 这是不可信的。你可以判断远程url地址是否存在,但不能判断远程文件是否存在。假设不考虑是否超时这个问题,而假设为都不会超时。即使你读取到了一个地址的内容,但也并不代表那个url地址 path 部分的文件真的存在啊
    +1 那个页面随便返回个什么也是存在了
  • 6楼:hanzhankang 发表于 2012-07-12 21:33 回复此评论
     只判断URL是不够的,应该要进一步判断,注意连接超时的处理。
  • 7楼:童学芬 发表于 2012-07-18 13:44 回复此评论

    引用来自“腾勇”的评论

    晕 这是不可信的。你可以判断远程url地址是否存在,但不能判断远程文件是否存在。假设不考虑是否超时这个问题,而假设为都不会超时。即使你读取到了一个地址的内容,但也并不代表那个url地址 path 部分的文件真的存在啊
    对的,404时不一定会发一个404给你的,发送200也是可以的;如果真是404,也有可能别人不让你访问而故意发一个404给你。
  • 8楼:陨落人间 发表于 2012-07-22 20:58 回复此评论
    重复造轮子。php自带 get_headers
    <?php
    $url 
    'http://www.example.com';
    print_r(get_headers($url));
    print_r(get_headers($url1));
    ?>
  • 9楼:WoodBunny 发表于 2012-07-23 14:56 回复此评论

    引用来自“陨落人间”的评论

    重复造轮子。php自带 get_headers
    <?php
    $url 
    'http://www.example.com';
    print_r(get_headers($url));
    print_r(get_headers($url1));
    ?>
    get_headers你真的用过?效率问题解决了吗? 不讨论不吵架 我认可我的标题有问题 但是这样的评论我不接受 如果是重复制造轮子我自己就删了
  • 10楼:帖子列表 发表于 2013-04-02 12:49 回复此评论
    经测试 第一个方法无论文件是否存在,都返回1
开源从代码分享开始 分享代码
WoodBunny的其它代码 全部(2)...