Ho bisogno di verificare se un file particolare esiste su un server remoto. L'utilizzo di is_file()
e file_exists()
non funziona. Qualche idea su come farlo in modo rapido e semplice?Come verificare se un file esiste da un url
risposta
è necessario utilizzare 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;
}
funziona bene hai una riga di battitura 1 functon dovrebbe essere la funzione –
Non hai bisogno di CURL per quello ... troppo troppo alto ... controlla la mia risposta qui sotto (usa get_header di PHP per questo!) – patrick
come gli altri è troppo, non controllando se si tratta di un file o meno, basta controllare l'URL. 'echo is_url_exists ('http://stackoverflow.com')? 'Sì': 'No'; 'echo' Sì. –
Fare una richiesta con arricciatura e vedere se restituisce un codice di stato 404. Esegui la richiesta utilizzando il metodo di richiesta HEAD in modo che restituisca solo le intestazioni senza corpo.
ho appena trovato questa soluzione:
if(@getimagesize($remoteImageURL)){
//image exists!
}else{
//image does not exist.
}
Fonte: http://www.dreamincode.net/forums/topic/11197-checking-if-file-exists-on-remote-server/
Intendevi 'getimagesize'? Come qui: http://uk1.php.net/getimagesize se è così allora i documenti dicono che può fare riferimento a file locali o remoti. – Todd
Sì, corretto. Grazie! –
getimagesize è troppo sovraccarico. Se vuoi solo sapere se esiste un file usa get_header di PHP (controlla la mia risposta) – patrick
Non hanno bisogno CURL per questo ... Troppo molto overhead per il solo voler verificare se un file esiste o no ...
Utilizzare PHP's get_header.
$headers=get_headers($url);
Poi controlla se $ risultato [0] contiene 200 OK (il che significa che il file è lì)
Una funzione per controllare se funziona un URL potrebbe essere questo:
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";
' Per impostazione predefinita get_headers usa una richiesta GET per recuperare le intestazioni' - quindi invece del sovraccarico di una richiesta di ricciolo (non proprio sicuro di quale overhead ci si stia riferendo) - c'è una richiesta GET dispendiosa che fa cadere il corpo - invece di usare una richiesta HEAD e solo ricevere le intestazioni. – AD7six
@ AD7six: stavo dando per scontato che l'impostazione di cURL in memoria causerebbe un sovraccarico, ho fatto alcuni test confrontando i due metodi e hai ragione: se hai caricato la libreria cURL è sempre più veloce usare il metodo accettato rispetto a get_headers. Ho confrontato tutti e 3 i metodi citati: cURL è il più veloce, quindi get_headers, quindi getimagesize con il lato negativo getimagesize aggiunto ti dirà solo se esiste un'immagine. È quello che è stato chiesto, quindi è ancora una risposta valida qui, ma non è molto versatile. – patrick
@ ad7six sei sicuro che get_headers sta richiedendo il corpo? fyi, puoi sovrascrivere la richiesta GET tramite il contesto dello stream: stream_context_set_default (['http' => ['method' => 'HEAD']]); $ intestazioni = get_headers ('http://example.com'); – Tobias
Hi secondo il nostro test tra 2 server diversi i risultati sono i seguenti:
utilizzando curl per il controllo di 10 file .png (ciascuno di circa 5 mb) era in media 5,7 secondi. utilizzando la verifica dell'intestazione per la stessa cosa è durato in media 7,8 secondi!
Quindi nel nostro test curl è stato molto più veloce se si devono controllare file più grandi!
la nostra funzione ricciolo è:
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;
}
qui è il nostro colpo di testa del campione di controllo:
function UR_exists($url){
$headers=get_headers($url);
return stripos($headers[0],"200 OK")?true:false;
}
- 1. posso verificare se esiste un file in un URL?
- 2. posso verificare se esiste un file in un URL?
- 3. Come verificare se esiste ancora un ALAsset usando un URL
- 4. Come verificare se esiste un file
- 5. come posso verificare se esiste un file?
- 6. Come verificare se un file esiste su un server esterno
- 7. Come verificare se l'immagine esiste con un determinato URL?
- 8. Verificare se esiste un file in Yii
- 9. Come verificare se un file esiste su un server web dal suo URL?
- 10. node.js verifica se esiste un URL remoto
- 11. pyspark: come verificare se un file esiste in hdf
- 12. Come verificare se esiste un file immagine remoto in PHP?
- 13. Come verificare se esiste un utente postgres?
- 14. Verificare se esiste un file locale (API HTML5 FS)
- 15. Verifica se esiste o meno un URL
- 16. Come verificare se esiste un percorso?
- 17. Come posso verificare se un file esiste usando Emacs Lisp?
- 18. Verificare se esiste un servizio web
- 19. Come verificare se un file esiste in una cartella?
- 20. Come verificare se esiste un file mappato in memoria?
- 21. Come verificare un file se esiste con jolly in Java?
- 22. Come verificare se esiste un file nel percorso definito dall'utente?
- 23. Come verificare se un file esiste in Matlab?
- 24. gelsomino - come verificare se esiste un argomento?
- 25. Come verificare se esiste un determinato assemblaggio?
- 26. Come verificare se esiste un elemento dell'array?
- 27. Prolog: come verificare se esiste un predicato?
- 28. Come faccio a verificare se un file esiste usando il suo URL senza scaricarlo?
- 29. Come verificare se un file è stato creato da pickle?
- 30. Come verificare se esiste un eseguibile nel% PATH% da un file batch di Windows?
perché non lavorare ??? – JellyBelly
È possibile utilizzare questa funzione getimagesize ("url"); . Rif: http://php.net/manual/en/function.getimagesize.php – InventorX