1. 程式人生 > >PHP如何判斷遠端圖片檔案是否存在

PHP如何判斷遠端圖片檔案是否存在

fopen()方法

最簡單的方法就是用fopen(),看看檔案能否開啟,能打就檔案當然就存在。

<?php
$url = 'http://www.nowamagic.net/images/test.jpg';

if( @fopen( $url, 'r' ) ) 
{ 
	echo 'File Exits';
} 
else 
{
	echo 'File Do Not Exits';
}
?>

fopen() 函式開啟檔案或者 URL。如果開啟失敗,函式會返回 FALSE。

語法:fopen(filename,mode,include_path,context)

引數 描述
filename 必需。規定要開啟的檔案或 URL。
mode 必需。規定要求到該檔案/流的訪問型別。可能的值見下表。
include_path 可選。如果也需要在 include_path 中檢索檔案的話,可以將該引數設為 1 或 TRUE。
context 可選。規定檔案控制代碼的環境。Context 是可以修改流的行為的一套選項。

mode 引數的可能的值:

mode 說明
"r" 只讀方式開啟,將檔案指標指向檔案頭。
"r+" 讀寫方式開啟,將檔案指標指向檔案頭。
"w" 寫入方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。
"w+" 讀寫方式開啟,將檔案指標指向檔案頭並將檔案大小截為零。如果檔案不存在則嘗試建立之。
"a" 寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。
"a+" 讀寫方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之。
"x" 建立並以寫入方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤資訊。如果檔案不存在則嘗試建立之。這和給底層的 open(2) 系統呼叫指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支援,僅能用於本地檔案。
"x+" 建立並以讀寫方式開啟,將檔案指標指向檔案頭。如果檔案已存在,則 fopen() 呼叫失敗並返回 FALSE,並生成一條 E_WARNING 級別的錯誤資訊。如果檔案不存在則嘗試建立之。這和給底層的 open(2) 系統呼叫指定 O_EXCL|O_CREAT 標記是等價的。此選項被 PHP 4.3.2 以及以後的版本所支援,僅能用於本地檔案。

fopen() 將 filename 指定的名字資源繫結到一個流上。如果 filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜尋協議處理器(也被稱為封裝協議)來處理此模式。如果該協議尚未註冊封裝協議,PHP 將發出一條訊息來幫助檢查指令碼中潛在的問題並將 filename 當成一個普通的檔名繼續執行下去。

如果 PHP 認為 filename 指定的是一個本地檔案,將嘗試在該檔案上開啟一個流。該檔案必須是 PHP 可以訪問的,因此需要確認檔案訪問許可權允許該訪問。如果激活了安全模式或者 open_basedir 則會應用進一步的限制。

如果 PHP 認為 filename 指定的是一個已註冊的協議,而該協議被註冊為一個網路 URL,PHP 將檢查並確認 allow_url_fopen 已被啟用。如果關閉了,PHP 將發出一個警告,而 fopen 的呼叫則失敗。

一個fopen的用法

<?php
$file = fopen("test.txt","r");
$file = fopen("/home/test/test.txt","r");
$file = fopen("/home/test/test.gif","wb");
$file = fopen("http://www.example.com/","r");
$file = fopen("ftp://user:[email protected]/test.txt","w");
?>

但是如果圖片資源所在伺服器掛掉了,這個函式會一直等待,所以我們需要一個備用方案。

CURL 方法

CURL是個很好用的類庫,下面看下如何用它來判斷。

<?php
$url2 = 'http://www.nowamagic.net/test.jpg';

$ch = curl_init(); 
$timeout = 10; 
curl_setopt ($ch, CURLOPT_URL, $url2); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 

$contents = curl_exec($ch);
//echo $contents;
if (preg_match("/404/", $contents)){
	echo '檔案不存在';
}
?>

curl_exec()執行完之後如果檔案不存在,會返回如下資訊:

HTTP/1.1 404 Not Found
Date: Tue, 14 Feb 2012 05:08:34 GMT
Server: Apache
Accept-Ranges: bytes
Content-Length: 354
Content-Type: text/html

用正則看看是否有404,有的話檔案就不存在。

相關推薦

PHP如何判斷遠端圖片檔案是否存在

fopen()方法 最簡單的方法就是用fopen(),看看檔案能否開啟,能打就檔案當然就存在。 <?php $url = 'http://www.nowamagic.net/images/test.jpg'; if( @fopen( $url, 'r' ) )

php 獲取遠端圖片大小

/** * 獲取遠端圖片的寬高和體積大小 * * @param string $url 遠端圖片的連結 * @param string $type 獲取遠端圖片資源的方式, 預設為 curl 可選 fread * @para

php 獲取遠端圖片大小 寬高

/** * 獲取遠端圖片的寬高和體積大小 * * @param string $url 遠端圖片的連結 * @param string $type 獲取遠端圖片資源的方式, 預設為 curl 可選 fread * @param bo

通過PHP批量下載圖片檔案

最近一直很忙,遇到一個手工活,需要下載一些遠端的圖片,一共一百多張,如果通過手工一張一張的儲存,也太耗費時間了,於是上網google了一把,找到PHP批量下載圖片檔案的方法,原文是出自平凡世界部落格的一片關於如何使用PHP批量下載CSS檔案中的圖片的文章。經過研究改寫了一下就

高效判斷遠端圖片是否存在

高效判斷遠端圖片是否存在 function remoteImageExist($url) { // $exif_imagetype = [ // 1 =&gt; 'GIF', // 2 =&gt; 'JPG', // 3 =&gt; 'PN

PHP下載遠端圖片及儲存到原生代碼

摘要:本在使用 PHP 做簡單的爬蟲的時候,我們經常會遇到需要下載遠端圖片的需求,所以下面來簡單實現這個需求。文主要和大家介紹了PHP實現下載遠端圖片的方法,小編覺得挺不錯的,現在分享給大家,也給大家做個參考,希望能幫助到大家!!!!1.使用 curl比如我們有下面這兩張圖片

php獲取遠端圖片並下載儲存到本地

/** *功能:php完美實現下載遠端圖片儲存到本地 *引數:檔案url,儲存檔案目錄,儲存檔名稱,使用的下載方式 *當儲存檔名稱為空時則使用遠端檔案原來的名稱 */ function getImage($url,$save_dir='',$filename='',$typ

PHP儲存遠端圖片到本地

方法一參考: // Function: 獲取遠端圖片並把它儲存到本地 //  確定您有把檔案寫入本地伺服器的許可權 // 變數說明: // $url 是遠端圖片的完整URL地址,不能為空。 // $filename 是可選變數: 如果為空,本地檔名將基於時間和日期 /

PHP實現遠端下載檔案到本地

1. /* *功能:php多種方式完美實現下載遠端圖片儲存到本地 *引數:檔案url,儲存檔名稱,使用的下載方式 *當儲存檔名稱為空時則使用遠端檔案原來的名稱 */ function getImage($url,$filename='',$type=0){     if(

python fabric 判斷遠端一個檔案是否存在並做處理

一般使用fabric,大多是跟遠端進行的互動,而在互動的時候,除了簡單程式碼蘊含的邏輯之外,時長也伴隨著檔案的傳輸,而且檔案中可能還有不少不小的檔案。 我們是否可以進行判斷,如果檔案存在,那麼我們就不

php採集遠端圖片儲存到本地

/** * 採集遠端圖片 * @param string $url 遠端檔案地址 * @param string $f

php判斷本地及遠端檔案是否存在

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PHP獲取遠端檔案大小 如果加判斷檔案大小以KB MB GB

<?php function sizecount($filesize) { if($filesize >= 1073741824) { $filesize = round($filesize / 1073741824 * 100) / 100 . ' g

PHP正則采集圖片並保

con lap sta php正則 exists conn hid 文件名 time <?php /* *功能:php完美實現下載遠程圖片保存到本地 *參數:文件url,保存文件目錄,保存文件名稱,使用的下載方式 *當保存文件名稱為空時則使用遠程文件原來的名稱

php判斷上傳文件是不是圖片,如果是,返回圖片格式

int 格式 unpack char .com intval 圖片格式 unp filename /判斷文件是不是圖片格式@param fileName 文件名@return array 如果code為1,是圖片;否則不是圖片@author lee complet@163.

php自動匹配圖片網址,並自動下載儲存本地化或遠端上傳到其它伺服器

在phpwind中.如果直接發表圖片網址.會自動轉為 以下的標籤形式[img]/attachment/img_85186769.jpg[/img] 所以.可以通過php正則匹配[img]中的網址,並把圖片網址對應的圖片,自動儲存到本地,然後通過php的ftp_put()函式,遠端ftp上

php下刪除真實檔案圖片

//我使用的是thinkphp框架 function delpic(){ header("Content-Type:text/html;charset=utf-8"); $pic = "./Public/Uploads/imgs/cadres/img/201

php判斷檔案或者目錄是否可寫

php判斷檔案或者目錄是否可寫   解決方法: 1.用法 $check=array('plant/config/db.php','plant/update/');   $count=count($check);   for($i=0;&n

獲取遠端圖片的寬高和體積大小(php封裝方法)

/** * 獲取遠端圖片的寬高和體積大小 * * @param string $url 遠端圖片的連結 * @param string $type 獲取遠端圖片資源的方式, 預設為 curl 可選 fread * @param boolean $isGetFiles

PHP實現下載遠端圖片儲存到本地的方法