Strana 1 z 1
Zistenie velkosti suboru
Napísané: St Mar 28, 2007 7:37 pm
od používateľa Spade
Zdravim.
Robim snippet, ktory pracuje na velmi jednoduchom principe, zapisete:
... a zacne sa stahovat subor v adrese "
www.nieco.sk/download/program.exe".
Snippet vyhodi tlacidlo s textom "Download" a pokial nan kliknete, zacne sa stahovanie. Ide o to, ze by som namiesto textu "Download" chcel mat "Download [500 KB]" ... teda vedla toho aj prislusnu velkost suboru.
Dokazal by to niekto?
A este by som sa chcel spytat, ze v CSS styloch je moznost input:hover - tato udalost nastava vtedy, ak uzivatel prejde mysou ponad input. Je mozne toto spravit aj pri kliknuti na objekt? Teda nieco ako input:click?
Vopred vdaka za pomoc.
Napísané: St Mar 28, 2007 8:13 pm
od používateľa dutch
na zjisteni a zobrazeni velikosti souboru muzes pouzit treba toto:
pricemz:
$size - vysledna promena, kterou umistis tam, kde budes chtit zobrazit tu velikost;
round - funkce, ktera zaokrouhli velikost souboru, jednicka znaci jedno cislo za desetinou carkou;
filesize - funkce, ktera zjisti velikost souboru, jehoz cesta je v $file, /1024 znamena, ze se to deli, aby vysledek byl v kB;
$file - absolutni cesta filesystemu k souboru, kteryho chces zjistit velikost - takze treba: /home/www/example.com/download/soubor.pdf...
to je cely
takze napises treba takhle:
vysledek bude
Download [553,3 kB]
jak to muze vypadat mam trebas
zde
Napísané: St Mar 28, 2007 9:12 pm
od používateľa Spade
Vyborne, vdaka!
Vies, zacinam s PHP a CSS a tak sa snazim nejako dostat do syntaxe ... zatial sa snazim pochopit najprimitivnejsie veci ako su napr. vyhodit textovy retazec. Ako ale vidim, v php sa nerozlisuje typ premennej ako napr. v pascale (integer, string ...), takze v tomto smere sa mi to zda jednoduchsie a prehladnejsie (netreba nic konvertovat).
Trosku este nerozumiem tomu, ako sa spaja viac retazcov dohromady - myslim si, ze to je bodkou:
... a toto by malo vyhodit napr.:
... v pascale to robim asi takto:
Kód: Vybrať všetko
var
a, b: string;
begin
b := 'nazdar';
a := '(' + b + ')';
end;
Neviem ci je to spravne, ale funguje to
Kazdopadne tento postup, ktory si napisal je spravny a dal by sa zlepsit - napr. by sa mohlo automaticky zistit ci je subor vacsi ako jeden megabajt a potom by sa jednotky zobrazovali prave v megabajtoch. Ale to je uz vyzva pre mna, tebe velmi dakujem za pohotovu odpoved
Napísané: St Mar 28, 2007 9:50 pm
od používateľa dutch
jak si to napsal je spravne...
jo samozrejme, ze se to da zlepsit... ja sem ti napsal to nejjednodussi co me napadlo, kdyz sem cet tvoji otazku... nejsem z tech co napisou hned postup na kompletni reseni, ty ses ptal, tak to taky musis vyresit, ja te jenom muzu nakopnout [bez obrazne
] - sem rad ze si tohle pochopil a beres to jako vyzvu... mnoho zdaru
Napísané: St Mar 28, 2007 11:33 pm
od používateľa Spade
Takze som sa aspon naucil pouzivat podmienky
Kód: Vybrať všetko
$tlacidlo = "Download";
$adresar = "download/";
$desatina = 2;
$velkost = round((filesize($adresar . $dir)/1024),$desatina);
if ($velkost >= 1024)
$zapis = round(($velkost / 1024), $desatina)." MB";
else
$zapis = $velkost." kB";
$vysledok = "<div align=\"center\"><form method=\"post\">
<input type=\"button\" class=\"button\" value=\"" . $tlacidlo . ' [' . $zapis . ']' . "\" onclick=\"window.location.href='$adresar$dir'\" /></form></div>";
return $vysledok;
Je to sice troska rozsiahlejsie, ale pre mna je to najlepsie riesenie. Ucel to splna, takze super.
Kód: Vybrať všetko
$adresar - je vlastne adresar, kde su subory na stiahnutie. Teda http://www.spade.eus.sk/download/
$subor - je subor umiestneny v adresari (pre rychlejsi zapis, nic viac)
Jasne, este sa to da spravit na gigabajty, terabajty ... ale aj tak, najblizsich 20 rokov neplanujem nahravat nic na ftp vacsie ako terabajt
Inak demo je napriklad tu:
http://www.spade.eus.sk/index.php?id=76
Napísané: Pi Mar 30, 2007 8:59 pm
od používateľa dutch
dobry, ale nevim jestli je to naschval, ale nic to nestahuje... pouze se mi dostane 404 o nedostecnych pravech pro adresar download/
Napísané: Št Apr 05, 2007 4:00 pm
od používateľa Spade
Mno chyba bola dost primitivna - trosku som sa v tom vrtal a vylepsoval to este o tlacidlo "Späť", takze som mal blbo premenovanu premennu.
Takze uz to funguje a cely kod je tu (dovolil som si tam dat aj podpis
Kód: Vybrať všetko
/*
Snippet: DownloadFile
Authors: dutch, Spade
Version: 0.2 [05.04.2007]
*/
$tlacidlo = "Download";
$spat = "Späť";
/* adresar, kde sa nachadzaju subory */
$adresar = "download/";
/* pocet desatinnych miest - 0,12 */
$desatina = 2;
/* aktivovat tlacidlo Spat? 1-ano; 0-nie */
$povolit = 1;
$velkost = round((filesize($adresar . $subor)/1024),$desatina);
if ($velkost >= 1024)
$zapis = round(($velkost / 1024), $desatina)." MB";
else
$zapis = $velkost." kB";
if ($povolit == 1)
$vysledok = "<div align=\"center\"><form method=\"post\">
<input type=\"button\" class=\"button\" value=\"" . $spat . "\" onclick=\"window.location.href='javascript:history.back(1)'\" />
<input type=\"button\" class=\"button\" value=\"" . $tlacidlo . ' [' . $zapis . ']' . "\" onclick=\"window.location.href='$adresar$subor'\" />
</form></div>";
if ($povolit == 0)
$vysledok = "<div align=\"center\"><form method=\"post\">
<input type=\"button\" class=\"button\" value=\"" . $tlacidlo . ' [' . $zapis . ']' . "\" onclick=\"window.location.href='$adresar$subor'\" />
</form></div>";
return $vysledok;
Snippet sa pouziva nasledovne:
Cize staci v snippete nastavit len konkretny adresar, kde su vsetky subory a v mieste, kde ma byt tlacidlo treba uz len napisat subor, ktory sa ma stahovat. Je to velmi primitivny snippet, takze mozno este spravim dalsiu verziu:)
Kazdopadne vdaka dutch-ovi za neskonalu pomoc! Bez neho by tento snippet nevysiel nikdy
PS:
Demo je tu:
http://www.spade.eus.sk/index.php?id=76
Inak to tlacidlo sa riadi podla CSS suboru, takze vzhlad zmenite prave tam.
Napísané: Pi Apr 06, 2007 10:31 pm
od používateľa dutch
mel bych jenom takovou vec na zamysleni - to tlacitko Zpet vyuziva JS fce history.go() nebo history.back(), coz v nekterych pripadech nemusi bejt dobry, treba zrovna na prikladu tady na foru:
kdyz kliknes na odkaz na demo snippetu, tak tlacitko nevykona nic...
ted je ale treba se zamyslet nad tim, cim to nahradit - moznosti je nekolik:
- vytvorit funkci, ktera bude sledovat http hlavicky a bude se vracet reffer, na kterej bude odkazovat to tlacitko [tim vylepsime JS fci o to, ze i kdyz je prazdna historie, budeme se mit kam vracet]
- vytvorit funkci, ktera bude doplnovat cestu odkazu tlacitka podle struktury webu [to je celkem vyhodny, ale pokud neni nijak extra udelana struktura webu, tak je to celkem na nic, mam na mysli to, ze kazdej jednotlivej dokument musi jit nekam zaradit - ma nejakou nadrazenou stranku nebo parent adresar]
ale to uz je jenom takovy hrani si
este by slo ten snippet rozsirit, tim ze by se dal upravovat pres parametry - jako ze do nazvu snippetu das nejenom nazev souboru, ale i adresar, kde se nachazi etc.
nebo do nej jeste muzes pridelat to, ze budes zjistovat priponu souboru a podle toho priradis k odkazu prislusnou ikonku [tak to mam treba udelany ja
]
jak rikam, je mozny si s tim ruzne vyhrat...
Napísané: Ne Apr 08, 2007 10:31 am
od používateľa Spade
Pravda, to tlacidlo "Späť" nie je nijak extremne spravene, takisto ma napadol sposob odvolavat sa na "vyssie" umiestneny dokument. I ked dalo by sa to spravit aj tak, aby sa tam nastavila presna cesta dokumentu po stlaceni toho tlacidla (napr.
http://www.spade.eus.sk/download.php), ale to je viac-menej neprakticke. Skor sa pokusim rozsirit to stromove riesenie cez dokumenty.
Ikonky by sa urcite hodili, to je dobry napad
Akurat neviem ci sa da do tlacidla vlozit vobec obrazok ... ale asi ano.
Naviac by sa tam asi hodilo pocitadlo stiahnuti, ale to je databaza a s tou zatial pracovat neviem (myslim cez prikazy). Predpokladam ze sa tam vytvori nejaka tabulka a taktiez nejake riadky (kazdy riadok = jeden subor). Toto by bola ale vyborna vymozenost, avsak bude treba to premysliet (aspon z mojej strany).
Napísané: Ne Apr 08, 2007 8:06 pm
od používateľa dutch
Spade napísal:Ikonky by sa urcite hodili, to je dobry napad
Akurat neviem ci sa da do tlacidla vlozit vobec obrazok ... ale asi ano.
Mozna bych tu ikonku nedaval do tlacitka, takovej standard bejva, ze se napise nazev souboru, velikost a pak nekde u toho je tlacitko na stazeni, takze mozna bys mohl nad tlacitko pripsat treba "text-2-write.zip" + ikonka zabalenyho archivu...
k tomu pocitadlu:
to je celkem jednoduchy, jedna tabule, na kazdym radku jeden soubor a u nej pocet stazeni, jediny, co je potreba udelat, je takovej redirektor na to stahovani, takze misto toho aby to tlacitko odkazovalo primo na soubor, odkaze se na skript s prislusnym parametrem [napr. id souboru nebo jmeno] a ten zajisti jak zaznamenani navyseni poctu stazeni tak redirekci na stazeni souboru... odkaz v praxi znamena napr:
Kód: Vybrať všetko
http://spade.eus.sk/download.php?soubor=text-2-write.zip
mozna se nekde na netu podivej na nejakej priklad, je jich spousta, z toho si neco "vysapni" a je to
Napísané: Ne Apr 08, 2007 8:29 pm
od používateľa dutch
hele ja mam dneska nejakou hravou naladu
sem tady neco spich, fakt narychlo, ber to jako priklad...
Kód: Vybrať všetko
<?php
if(isset($_GET['id']) && ($_GET['id'] > 0)) {
@$sql = mysql_query("SELECT * FROM $nazev_tabule WHERE id = '$_GET[id]'");
if (mysql_num_rows($sql) <> 0) {
$rs = mysql_fetch_array($sql);
@$sql = mysql_query("UPDATE $nazev_tabule SET stazeno = stazeno + 1 WHERE id = '$_GET[id]'");
header("Location:". $rs['umisteni_souboru']);
exit;
} else {
echo "Soubor nenalezen (id ".$_GET['id'].")!!";
}
} else {
header("Location: index.php");
}
?>
$nazev_tabule - nazev zabulky, ve ktery budou radky:
id - jedinecny identifikator;
nazev - nazev souboru;
umisteni_souboru - to je asi jasny
;
stazeno - pocet stazeni;
muze jich tam bejt samozrejme vic, je to jenom priklad, muze tam bejt treba jeste popis, datum pridani etc.
//edit:
zapomel sem poznamenat, tomuhle celymu musi predchazet pripojeni do db pres mysql_connect() a mysql_select_db()
Napísané: Po Apr 09, 2007 12:29 pm
od používateľa Spade
Mno parkrat som si ten tvoj kod precital a v podstate mu rozumiem, ale neviem kam to vlastne vlozit ... mam to vlozit do toho mojho snippetu (niekam na koniec)?
Napísané: Ut Apr 10, 2007 10:18 pm
od používateľa dutch
v podstatte je to jednoduchy, ale budes ten tvuj dosavadni kod muset trochu prerobit
protoze:
a) - musis tvorit odkazy na soubory ve stylu, aby s nima moh pracovat ten obsluznej skriptik na to pocitani stazeni;
b) - nejak ty soubory budes muset usporadat, pac ten skript je poznava podle jedinecnyho id, ktery se udeluje v db [jeden radek = jeden soubor = jedno id] nebo ten skript musis predelat tak, aby ty soubory rozeznaval podle nazvu - ale potom se ti zase nesmi opakovat nazev souboru, nesmis ho splist etc.;
c) - dalsi me ted nejak nenapada, ale asi bych jeste na neco prisel
potom to funguje v podstate takhle:
na strankach je odkaz na soubor tvaru:
Kód: Vybrať všetko
http://spade.eus.sk/index.php?id=76&fid=120 // musi se pouzit fid, protoze id je uz pouzito pri rozeznani stranky
skript si to prelouska, zjisti ze je uvedena promena $_GET['fid'], v ni je 120, podiva se do db do tabule nazev_tabule na radek s id 120, navysi hodnotu stazeni o jedna, zjisti url ze sloupce umisteni_souboru a posle hlavicku s linkem na stazeni souboru prohlizeci... snadne, ze?
Re: Zistenie velkosti suboru
Napísané: Ut Máj 22, 2007 5:59 pm
od používateľa Spade
Jednoduche to je, ano. Presne viem, co chcem spravit, ale ja absolutne neviem programovat cez PHP a obzvlast nie cez databazu
Cez Delphi by som to spravil do obycajneho INI suboru a bol by pokoj, tuto vseliake napajanie