2010-11-24 5 views
0

Я пытаюсь загрузить файл и поместить его содержимое в db, используя php. Я могу это сделать. Но что, если мне нужно сначала проверить URL-адрес, а затем, если он существует, загрузить, иначе сообщить о сбое. Как мне это сделать?File url check in php

сказать: $ url = "...";

мне нужно условие:

если (файл в URL существует)

{

 report success; 

     download; 

}

еще

 report failure; 
+0

@aendrew и Джеф: Ошибка "... не удалось открыть поток HTTP ....." не должен быть напечатан. скажем, я должен поймать ошибку и отобразить ее в моих собственных терминах. – Kut 2010-11-24 03:29:33

+0

С моим кодом вы не должны сталкиваться с какими-либо ошибками, так как символ @ используется для подавления предупреждений. – xaav 2010-11-24 21:56:55

ответ

0

Просто используйте следующие код ниже, чтобы проверить, существует ли файл.

<? 
$ct = @file_get_contents($url) 

if(($ct != false)&&($ct != '')) { 
//The file exists 
} 
?> 

Если ресурс может занять много времени для извлечения, то вы можете установить тайм-аут, как это:

// Create the stream context 
$context = stream_context_create(array(
'http' => array(
'timeout' => 5  // Timeout in seconds 
) 
)); 

// Fetch the URL's contents 
$contents = @file_get_contents($this->url, 0, $context); 

// Check for empties 
if (!empty($contents)) { 
//The file exists 

} 
+0

спасибо помощнику. что работает – Kut 2010-11-24 03:47:26

0

if (fopen($url)) { report success; download; } else { report failure }

... Если сделать трюк.

Добавить символ @ перед функцией, чтобы предотвратить выход ошибки; так:

if (@fopen($url)) { report success; download; } else { report failure }