Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: PHP: Tiedoston koko DeLuxe

Juice [14.07.2004 18:54:16]

#

Koodi tehty tarpeeseen omille kotisivuille. Koodi yksinkertaisesti hakee tavumäärän ja jakaa sen tarvittaessa ja lisää loppuun oikean yksikön. En katsonut tarpeelliseksi laittaa gigatavuja. Koodia on helppo muokata vastaamaan omia tarpeitaan. Esimerkki käytöstä:
echo fsize("sol.exe");
demo : http://koti.mbnet.fi/minigrip/tsip

/***********************************************/
/* fsize (tiedoston koko) -funktio             */
/* (c) Jussi "Juice" Kilpeläinen 2004          */
/* http://koti.mbnet.fi/minigrip               */
/* minigrip@mbnet.fi                           */
/* saa muokata, kunhan copyrightiin ei kosketa */
/* kiitos tsurigalle                             */
/***********************************************/

function fsize($tiedosto)
{

/* Mikäli tiedostoa ei löydy, niin hypätään funktion loppuun. */
    if (($koko = @filesize($tiedosto)) !== false)
    {

         if ($koko >= 1048576)
         {
         $koko = $koko / 1048576;
         return round($koko,2)."Mt";
         }


         elseif ($koko >=1024)
         {
             $koko = $koko / 1024;
         return round($koko)."kt";
         }


         elseif ($koko < 1024 && $koko > 0)
         {
             return $koko." tavua";
         }
    }

    else
    {
         return "tuntematon";
    }

}
?>

tsuriga [14.07.2004 23:17:01]

#

Parannusehdotukset näemmä hyväksytty, kiitos copyrightseista :).

Kannattaa laittaa näin tuo tiedostokoon tarkistus:

if (($koko = @filesize($tiedosto)) !== false) {
  // kokotarkistukset tähän
  }
else echo "tuntematon";

Näin jos tiedoston koko on 0, sekin huomataan. Jos tiedostokoon haku epäonnistuu, filesize palauttaa falsen. Koska false == 0, niin operaattoria >= ei voi käyttää.

Tässä vielä one-lineri, tekijänä silentium0 at mailcity dot com, muokkasin hieman:

<?php
function fsize($sizeInBytes,$precision=2)  {
  return ($sizeInBytes<1024)?"$sizeInBytes bytes":round(($sizeInBytes/pow(1024,floor(log($sizeInBytes,1024)))),$precision).substr(" KMGTPEZY",log($sizeInBytes,1024),1)."b";
  }
?>

Juice [17.07.2004 18:20:53]

#

Nyt minäkin älysin tuon korjauksesi. Tuollaista ei kyllä ihan noin vain tule ajatelleeksi. Kiitos kaikesta antamastasi palautteesta ja korjausehdotuksista ;)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta