FilesizeAngabe wird nicht angezeigt :(

Webspace: cybton.com
----------------------------------

hi,

ich möchte gern, dass mir PHP automatisch die Größe der verlinkten Bilder anzeigt.
Dazu hab ich folgendes Skript, welches ich im <head>-Bereich der HTML-Datei eingefügt habe:

PHP:
<?php
function get_size($url) {
    $head = "";
    $url_p = parse_url($url);
    $host = $url_p["host"];
    $path = $url_p["path"];

    $fp = fsockopen($host, 80, $errno, $errstr, 20);
    if(!$fp) {
        return $errstr;
    } else {
        fputs($fp, "HEAD ".$url." HTTP/1.1\r\n");
        fputs($fp, "HOST: dummy\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
        while (!feof($fp)) {
            $head .= sprintf("%s%s", $ourhead, fgets ($fp, 128));
        }
    }
    fclose ($fp);
    $head = explode("\n", $head);
    foreach($head as $h) {
        $s = "Content-Length: ";
        if(substr($h, 0, strlen($s)) == $s) {
            $size = substr($h, strlen($s));
            break;
        }
    }
    return $size;
}
?>

Im <Body>-Tag ist dann folgendes zufinden.
PHP:
<?php echo get_size("http://xxx/test/bild2.jpg"); ?>

Aber leider funktioniert es nicht. Da wo die Größe der Datei stehen sollte steht gar nichts.
Woran liegt das. Was muss ich ändern? Danke
 
Hab mir das Script mal angeschaut! Es funzt, bis auf ein paar kleinigkeiten.

1)Hast Du das Script nur Lokal getestet? Wenn ja eine gültige Adresse angegeben?
Lokal ging es bei mir einwandfrei.

2)Hast Du das Script schonmal mit einer gültigen Webadresse gefüttert? Da bekommst nämlich gleich eine Fehlermeldung, "Connection Timeout..."
 
hi BasicAvid,

Lokal funzt das einwandfrei. Cybton.com hat wahrscheinlich "fsockopen" deaktiviert.
Weißt du vllt einen Webspace-Anbieter der es aktiviert hat oder eine andere Möglichkeit die Größen der Dateien auszugeben. danke
 
Du hast ja Zugriff auf die Dateien oder?
Wenn ja kannst Du das ganze mit der Funktion filesize() auslesen, die liefert Dir nämlich die Größe einer Datei in Bytes!

Was genau willst Du eigentlich machen?
 
Zugriff hab ich, ja.
Hab das hier noch ausprobiert. Klappt aber auch nicht und nur filesize() klappt auch nicht bei cybton.com. Ich werd die Tage mal den Webspace wechseln. Mal schauen, wie es dann dort aussieht. Was ich machen will? Die Größe von Bildern auslesen.

PHP:
<?php

function Dateigroesse($URL)
{
    $Groesse = filesize($URL);
    if($Groesse<1000)
    {
        return number_format($Groesse, 0, ",", ".")." Bytes";
    }
    elseif($Groesse<1000000)
    {
        return number_format($Groesse/1024, 0, ",", ".")." kB";
    }
    else
    {
        return number_format($Groesse/1048576, 0, ",", ".")." MB";
    }
}

?>
<html>
<head>
<title>Dateigröße eines Downloads automatisch anzeigen</title>
</head>
<body>

<a href="downloads/bilder.zip">Download</a> <?php echo Dateigroesse("downloads/bilder.zip"); ?><br>
<a href="downloads/programm.zip">Download</a> <?php echo Dateigroesse("downloads/programm.zip"); ?>

</body>
</html>
 
worauf zeigt die "URL"? kann sein, dass dein provider wie oben schon geschrieben externe links nicht zulaesst. --> wenn du die groesse von lokalen files haben willst, nimm lokale pfade...damit wirds sicher funktionieren.
 
Soweit ich gesehen habe willst Du die Files anzeigen und zum Download anbieten oder? Das nachfolgende Script liest aus einem Verzeichnis alle Dateien aus und zeigt Sie an. Liegt die PHP-Datei auf dem gleichen Server wie Dateien die Du auslesen willst?


PHP:
<?php 
function link()
{
echo "OnMouseOver=\"javascript:this.className='over'\" OnMouseOut=\"javascript:this.className='zeile'\"";
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <title>Download</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
  </head>
  <style type="text/css">
  .over{background-color:#7428D0;}
  .up{}
  a:link{ text-decoration:none;
          color:#ffffff;
        }
  a:link:hover{
            text-decoration:none;
            color:#ffffff;
            
         }
  a:visited{
              text-decoration:none;
              color:#ffffff;
              
           }
 a:visited:hover{
                  text-decoration:none;
                  color:#ffffff;
                }
td.title{ border:1px;
          border-style:solid; 
          border-color:#000000; 
          background-color:#7428D0;
          font-size:10pt;
          font-weight:bold;
        }
td.zeile{ border:1px;
          border-style:solid; 
          border-color:#7428D0; 
          background-color:#000000;
          color:#ffffff;
          font-size:10pt;
        
        }
td.info{ color:#ffffff;}
body{  background-color:#000000;}         
button {  border:1px; 
          border-style:solid;
          border-color:#ffffff; 
          background-color:#7428D0;}
  
  
  
  </style>
  <body>
    <table border="0" align='center' width="470" cellspacing="1">
    <tr><td class="title">Dateiname</td><td class="title">Typ</td><td class="title">Geändert</td><td class="title">Größe</td></tr>
    <?php
    $loginOK=TRUE;
    if(isset($loginOK))
    {
    function showdir($path)
    {
      $zaehler=0;
      //echo "<tr><th colspan='3' align='center'width='350'>Scripte</th></tr>\n";
      $dirs = $files = array();
      $dir = opendir($path);
      while($entry = readdir($dir))
        if(is_file($entry))
        {
          $entry=strtolower($entry);
          $files[]=$entry;
        }
       fclose($dir);
      sort($files);
      for($i=0;$i<count($files);$i++)
        {
          $fsize=filesize($files[$i]);
          $fmtime=filemtime($files[$i]);
          $fmtime=date("d.m.Y",$fmtime);
          $ftyp=explode(".",$files[$i]);
          echo "<tr><small><td class='zeile'",link(),"><a href='", $files[$i], "'>$ftyp[0]</a></td><td class='zeile' align='center'>",$ftyp[1],"</td><td class='zeile' align='center'>$fmtime</td><td align='right' class='zeile'>",$fsize,"</td></tr>\n";
          $zaehler++;
                  
        
        }
        if($zaehler==0)
        {
          echo "<tr><td colspan='4' class='info'><small>Es wurden keine Dateien zum anzeigen gefunden!</small></td></tr>\n";
        }
        else
        {
          echo "<tr><td colspan='4' class='info'><small>Es wurde(n) $zaehler Datei(en) zum anzeigen gefunden!</small></td></tr>\n";
        }
        
     }
     showdir('./');
     }
     else
     {
      echo "<tr><td colspan='2' align='center' class='info'><h3>Sie haben sich nicht angemeldet!</h3></td></tr>\n";
     }
    ?>
    
    </table>
    <center><button onClick="window.close()" class="button">Close</button></center>    
  </body>
</html>
 
Zurück
Oben