Trådstart 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)
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.