Autor Zpráva
TomasJ
Profil
Dobrý den všem přeji.

Mám takový problém. Dělám galerii obrázků pro svůj web a potřebuji takové nějaké Info o každém obrázku který se načtě. Samozřejmě obrázky jsou na jiném serveru než samotná galerie...
Nevím jestli je tento kód správně:

function PictSizeKb(){ 
 var soubor = document.getElementById("picture").getAttribute("src");
 var obj = new ActiveXObject("Scripting.FileSystemObject");
 var us = obj.GetFile(soubor);
 
if(us.Size=="" || us.Size==null || us.Size=="undefined"){
document.getElementById("p_size_kb").innerHTML=" - Neznámá velikost";
}
else{
document.getElementById("p_size_kb").innerHTML=" - "+us.Size;
}}


Pokud to není správný script tak prosím poraďte jak udělám správný.
Děkuji.
Chamurappi
Profil
Reaguji na TomaseJ:
Internet Explorer ti nedovolí na webu používat Scripting.FileSystemObject. Ostatní prohlížeče nepodporují ActiveXObject. Musel bys použít AJAX (přečíst HTTP hlavičku Content-Length) a ten zase nefunguje napříč doménami.
Explorer podporuje vlastnost fileSize na obrázcích, ostatní prohlížeče bohužel nikoliv.

Nejspolehlivější by bylo, kdybys tu velikost zjistil na straně serveru nějakým PHP či ASP.NET skriptem.

Méně spolehlivé řešení bys mohl postavit na službě json-head.appspot.com, která dokáže zprostředkovat HTTP hlavičky z libovolné adresy ve formátu javascriptového kódu. Vyšel bys z tohoto základu:
<script>
  function hlavickaLoga(data)
  {
    alert("Velikost loga DJPW je: " + data.headers["content-length"] + " bytů.");
  }
</script>
<script src="http://json-head.appspot.com/?url=http://diskuse.jakpsatweb.cz/img/logo.png&callback=hlavickaLoga"></script>
TomasJ
Profil
Chamurappi:

Omlouvám se ale AJAX ani ASP.NET neumím... Možná bude lepší když to udělám přes ten json-head.appspot.com
Shoty
Profil *
[#3] TomasJ
Jestli bys chtěl skusit to PHP tak si vytvoř soubor s koncovkou .php a dej do něho:

<?php
function remotefsize($url) {
        $sch = parse_url($url, PHP_URL_SCHEME);
        if (($sch != "http") && ($sch != "https") && ($sch != "ftp") && ($sch != "ftps")) {
            return false;
        }
        if (($sch == "http") || ($sch == "https")) {
            $headers = get_headers($url, 1);
            if ((!array_key_exists("Content-Length", $headers))) { return false; }
            return $headers["Content-Length"];
        }
        if (($sch == "ftp") || ($sch == "ftps")) {
            $server = parse_url($url, PHP_URL_HOST);
            $port = parse_url($url, PHP_URL_PORT);
            $path = parse_url($url, PHP_URL_PATH);
            $user = parse_url($url, PHP_URL_USER);
            $pass = parse_url($url, PHP_URL_PASS);
            if ((!$server) || (!$path)) { return false; }
            if (!$port) { $port = 21; }
            if (!$user) { $user = "anonymous"; }
            if (!$pass) { $pass = "phpos@"; }
            switch ($sch) {
                case "ftp":
                    $ftpid = ftp_connect($server, $port);
                    break;
                case "ftps":
                    $ftpid = ftp_ssl_connect($server, $port);
                    break;
            }
            if (!$ftpid) { return false; }
            $login = ftp_login($ftpid, $user, $pass);
            if (!$login) { return false; }
            $ftpsize = ftp_size($ftpid, $path);
            ftp_close($ftpid);
            if ($ftpsize == -1) { return false; }
            return $ftpsize;
        }
}
?>


a hned pod to:
<?php
$url = "http://diskuse.jakpsatweb.cz/img/logo.png";
remotefsize($url);
?>


Server musí podporovat PHP
Stačí když změníš "http://diskuse.jakpsatweb.cz/img/logo.png" a jiný odkaz :)
Shoty
Profil *
Oprava druhé části:
<?php
$url = "http://diskuse.jakpsatweb.cz/img/logo.png";
echo remotefsize($url);
?>
TomasJ
Profil
Shoty:
Děkuji za rady :D s PHP jsem asi zkušenější jak s JS... Ještě to vyzkouším...
Shoty
Profil *
Kdyžtak řekni jestli ti to jede pak můžeš udělat třeba tohle:

document.getElementById("p_size_kb").innerHTML=" -
<?php
$url = "http://diskuse.jakpsatweb.cz/img/logo.png";
echo remotefsize($url);
?>
";

to PHP to vypíše na serveru a pak v prohlížeči se to doplní.
TomasJ
Profil
jj PHP mi jde to je mazec, ale nevýhodou je, že jsem chtěl tu galerii pouze ve formátu html :D
Díky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: