webForumDet fria alternativet

Hämta filstorlek från externa sidor?

PHP

4 svar · 501 visningar · startad av Guldstrand

Medlem sedan juli 20041 271 inlägg
Frågan#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

Medlem sedan mars 20007 896 inlägg
#2

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.

Medlem sedan juli 20041 271 inlägg
#3

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?

Medlem sedan juli 20041 271 inlägg
#4

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?

Medlem sedan mars 2007845 inlägg
#5

Det tar tid för att hela filen måste hämtas hem innan storleken kan kollas.

256 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
115 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)