Frågan 21 okt. 2008 15:49 #1 Hur hämtar man filstorleken på filer som finns på andra (externa) sidor?
Testade med "filesize", men fick då:
Warning: filesize(): Stat failed for http://externlänk/fil.exe (errno=2 - No such file or directory)
:r
S SPiN Medlem sedan mars 2000 7 896 inlägg En fuling är att hämta hela filen med file_get_contents(), och sedan ta en strlen() på den.
<?php
echo strlen(file_get_contents("http://sida.com"));
Annars skickar vissa webservers med filstorleken i headers, men det verkar vara sällsynt på dynamiska sidor (som .php-dokument) - oftast skickas den headern bara vid statiska sidor (som .html-dokument). Den lösningen kan du fixa med get_headers(), den är i mitt tycke lite snyggare - men första lösningen är nog mer "universell", och fungerar på alla dokument.
Hmm, ok... så det räcker att endast skriva "strlen(file_get_contents("direktlänk"))" ?
EDIT: En annan fråga... hur löser jag så att jag endast visar storleken om det direktlänkas till en fil (zip, rar, exe), inte annars?
Just nu har jag följande:
$filnamn = htmlspecialchars($row['direktadress']);
$adress = strlen(file_get_contents($filnamn));
// de tillåtna fil-typerna
$filetypes = 'exe,rar,zip';
// hämta filtypen
$types = explode(',',$filetypes);
$file = explode('.',$filnamn);
$extension = $file[sizeof($file)-1];
// kolla filtypen
if(!in_array($extension,$types)){
$filtyp = "";
$storlek = "?";
} else {
$filtyp = "( .$extension )";
$storlek = round($adress/1024);
}
..och det verkar fungera, MEN det tar en stund innan sidan laddas. :(
Går det att skynda på det hela lite?
drew Medlem sedan mars 2007 845 inlägg Det tar tid för att hela filen måste hämtas hem innan storleken kan kollas.