Avatar billede fatter_keine Nybegynder
04. august 2007 - 16:25 Der er 19 kommentarer og
2 løsninger

Tjek fils eksistens

Hejsa,

Hvordan tjekker jeg nemmest om en fil jeg vil linke til eksisterer?

Tak!
Avatar billede w13 Novice
04. august 2007 - 16:28 #1
Avatar billede w13 Novice
04. august 2007 - 16:28 #2
Denne vil så enten returnere true/false.

Eks.:

<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>
Avatar billede fatter_keine Nybegynder
04. august 2007 - 17:41 #3
Denne påstår at filen ikke eksisterer:


if(file_exists('http://www.klid.dk/homeftp/ubuntu-cd/kubuntu/6.06/kubuntu-6.06.1-desktop-i386.iso')){echo"The file exists";}else{echo"The file doesn't exist";}
Avatar billede madeindk Nybegynder
04. august 2007 - 17:42 #4
Tror bestemt ikke du kan gøre det på den der måde, det skal være lokalt på serveren.
Avatar billede madeindk Nybegynder
04. august 2007 - 17:45 #5
Så skal du nok ud i et PING script for at undersøge det der. Men det kan jeg desværre ikke hjælpe dig med, jeg koder nemlig normalt i ASP og der er noget der ligner den der File Exists funktion - men den kan kun retunere om en fil eksisterer på serveren.
Avatar billede jensgram Nybegynder
04. august 2007 - 17:48 #6
"As of PHP 5.0.0 this function can also be used with some URL wrappers. Refer to Appendix O, List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.".

Hvilken version af PHP?
Avatar billede jensgram Nybegynder
04. august 2007 - 17:51 #7
Hov - nu blev jeg forvirret :)

HTTP-wrapperen understøtter ikke stat() [http://www.php.net/manual/en/wrappers.http.php] og således nok heller ikke file_exists(). Sorry.
Avatar billede fatter_keine Nybegynder
04. august 2007 - 17:53 #8
Andre løsningsforslag?
Avatar billede jakobdo Ekspert
04. august 2007 - 17:54 #9
Du kunne prøve med en fopen() og se om filen kan åbnes?
Avatar billede w13 Novice
04. august 2007 - 18:19 #10
Nu søgte jeg på google og fandt dette, som muligvis virker:

<?php
$url = "www.google.com";

$check = fsockopen($url, 80);

if(!$check) {
    echo "$url doesn't exist";
}
?>

Ref.: http://www.htmlforums.com/php-programming/t-check-if-a-webpage-exists-40148.html
Avatar billede w13 Novice
04. august 2007 - 18:33 #11
Kan selvfølgelig forkortes lidt:

<?php
if(!fsockopen("www.google.com",80)){
  echo "$url doesn't exist"
}
?>
Avatar billede fatter_keine Nybegynder
04. august 2007 - 19:59 #12
Avatar billede w13 Novice
04. august 2007 - 20:03 #13
Hvad hvis du prøver en adresse, som ikke har en "403 - Access forbidden"?
Avatar billede jakobdo Ekspert
04. august 2007 - 22:36 #14
403 vil jo være et problem ja, og det vil mange websider vel generelt, da de jo melder en fejl og dermed får funktionen et svar.

Der er mange forslag på www.php.net/file_exists

F.eks. dette:

$fileUrl = "http://www.examplecom/test.jpg";
$AgetHeaders = @get_headers($sourcePath);
if (preg_match("|200|", $AgetHeaders[0])) {
// file exists
} else {
// file doesn't exists
}
Avatar billede w13 Novice
05. august 2007 - 00:23 #15
Om en fil ikke eksisterer eller bare viser en fejlmeddelelse kan vel også være lidt det samme. =) Kan i hvert fald ikke se det smarte i at linke til en fejl.
Avatar billede way3000 Nybegynder
05. august 2007 - 16:25 #16
Ideen er vel at tjekke om filen er der og hvis den ikke er der skal man ikke linke til den. det er vel en eller anden form for at undgå dead links. kunne jeg forestille mig.

Hvor tit har jeg ikke sat og læst en god artikkel og så når jeg trykker på linket for at "see for my self" så er der 404 :(
Avatar billede jakobdo Ekspert
05. august 2007 - 16:36 #17
Kommentar: jakobdo -> 04/08-2007 22:36:13 må da være løsningen???
Avatar billede jakobdo Ekspert
05. august 2007 - 19:22 #18
Dette må være den mest korrekte løsning:

<?php
//http://www.eksperten.dk/spm/790264
$url = 'http://www.klid.dk/homeftp/ubuntu-cd/kubuntu/6.06/kubuntu-6.06.1-desktop-i386.iso';
$headers = @get_headers($url);
if(strpos($headers[0],'200') === false)
{
    echo 'Linket er d&oslash;dt';
}
else
{
    echo '<a href="'.$url.'">Download</a>';
}
?>

403 kan ske, hvis klid ikke mener din IP hører til DK.
Avatar billede fatter_keine Nybegynder
11. august 2007 - 19:39 #19
jakobdo> Der ser ud til at være en fin løsning... point?
Avatar billede jakobdo Ekspert
12. august 2007 - 11:49 #20
Svar!
Avatar billede jakobdo Ekspert
13. august 2007 - 17:22 #21
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester