Necesito comprobar si existe un archivo en particular en un servidor remoto. El uso de is_file()
y file_exists()
no funciona. ¿Alguna idea de cómo hacer esto de forma rápida y fácil?Cómo comprobar si existe un archivo desde una url
Respuesta
que tienen que utilizar CURL
function is_url_exist($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($code == 200){
$status = true;
}else{
$status = false;
}
curl_close($ch);
return $status;
}
funciona bien tiene una línea de error tipográfico 1 función debe ser función –
No necesita CURL para eso ... demasiada sobrecarga ... revisa mi respuesta a continuación (¡usa los get_headers de PHP para esto!) – patrick
como los demás, tampoco revisa si es un archivo o no, simplemente revisa la URL. 'echo is_url_exists ('http://stackoverflow.com')? 'Sí': 'No'; 'echo' Sí '. –
Realice una solicitud con curl y verifique si devuelve un código de estado 404. Realice la solicitud utilizando el método de solicitud HEAD para que solo devuelva los encabezados sin un cuerpo.
Acabo de encontrar esta solución:
if(@getimagesize($remoteImageURL)){
//image exists!
}else{
//image does not exist.
}
Fuente: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
¿Querías 'getimagesize'? Como aquí: http://uk1.php.net/getimagesize si es así, los documentos dicen que puede hacer referencia a archivos locales o remotos. – Todd
Sí, corregido. ¡Gracias! –
getimagesize es demasiada sobrecarga. Si solo quieres saber si existe un archivo usa el get_header de PHP (verifica mi respuesta) – patrick
que no es necesario para que RIZO ... Demasiado mucha sobrecarga por solo querer comprobar si existe un archivo o no ...
Uso PHP's get_header.
$headers=get_headers($url);
A continuación, comprobar si $ resultado [0] contiene 200 OK (lo que significa que el archivo está allí)
Una función para comprobar si funciona una URL podría ser la siguiente:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
/* You can test a URL like this (sample) */
if(UR_exists("http://www.amazingjokes.com/"))
echo "This page exists";
else
echo "This page does not exist";
' Por defecto, get_headers usa una solicitud GET para buscar los encabezados', así que en lugar del sobrecarga de una solicitud curl (no estoy seguro de a qué sobrecarga se refiere) - hay una solicitud GET derrochadora que deja el cuerpo en lugar de usar una solicitud HEAD y solo recibir los encabezados. – AD7six
@ AD7six: Asumí que configurar cURL en memoria causaría sobrecarga, hice algunas pruebas comparando los dos métodos y tiene razón: si tiene cargada la biblioteca cURL, es más rápido usar el método aceptado en comparación con get_headers. Comparé los 3 métodos mencionados: cURL es el más rápido, luego get_headers, luego getimagesize con la desventaja añadida getimagesize solo le dirá si existe una imagen. Es lo que se pidió, por lo que sigue siendo una respuesta válida aquí, pero no es muy versátil. – patrick
@ ad7six ¿estás seguro de que get_headers está solicitando el cuerpo? fyi, puede anular la solicitud GET a través del contexto del flujo: stream_context_set_default (['http' => ['method' => 'HEAD']]); $ headers = get_headers ('http://example.com'); – Tobias
Hola según nuestra prueba entre 2 servidores diferentes, los resultados son los siguientes:
usando curl para verificar 10 archivos .png (cada uno de aproximadamente 5 mb) fue en promedio 5,7 segundos. usando un control de encabezado para la misma cosa ¡tomó un promedio de 7.8 segundos!
¡De modo que en nuestro curl de prueba fue mucho más rápido si tiene que verificar archivos más grandes!
nuestra función rizo es:
function remote_file_exists($url){
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($httpCode == 200){return true;}
return false;
}
aquí es nuestra cabecera muestra de verificación:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
- 1. Comprobar si existe una URL en Ruby
- 2. ¿Cómo comprobar si existe una imagen con una URL determinada?
- 3. Cómo comprobar si un archivo existe en un archivo MAKE
- 4. Cómo comprobar si existe un archivo en un servidor externo
- 5. ¿Cómo comprobar si un archivo existe en una carpeta?
- 6. ¿Puedo verificar si existe un archivo en una URL?
- 7. Error al comprobar si existe un archivo
- 8. ¿Cómo comprobar si existe un directorio que contiene un archivo?
- 9. ¿Cómo comprobar si existe una ventana hija?
- 10. Comprobar si existe el archivo sin crear
- 11. Comprobar si un archivo es una imagen
- 12. XPath: ¿Cómo comprobar si existe un atributo?
- 13. ¿Puedo verificar si existe un archivo en una URL?
- 14. Cómo comprobar si NSUserDefaults existe
- 15. ¿Cómo comprobar si existe niño
- 16. Cómo comprobar si existe un enlace simbólico
- 17. Comprobar si existe tabla
- 18. Comprobar si un archivo existe en el servidor en ASP.NET
- 19. Comprobar si existe sesión JSF
- 20. Comprobar si existe una clave en Memcache
- 21. Comprobar si existe recurso
- 22. Comprobando si existe una URL o no
- 23. Comprobar si existe un nodo mediante XSLT
- 24. ¿cómo puedo verificar si existe un archivo?
- 25. ¿Cómo comprobar si existe un archivo ejecutable en% PATH% desde un archivo de proceso por lotes de Windows?
- 26. Comprobar si un evento ya existe
- 27. php: comprobar si existe una ruta?
- 28. iPhone: ¿Cómo comprobar si existe una subcadena en una cadena?
- 29. Comprobar si el archivo existe en el servidor remoto utilizando su URL
- 30. ¿Cómo comprobar si existe un molde implícito o explícito?
por qué no trabajar ??? – JellyBelly
Puede usar esta función getimagesize ("url"); . Ref: http://php.net/manual/en/function.getimagesize.php – InventorX