Veškeré obrázky a soubory nahrávané prostřednictvím administračního rozhraní jsou ve výchozím nastavení ukládány do složky upItems
v rootu webu. Je tedy nutné, aby uživatelský účet, pod kterým je JellyPot na serveru spuštěn, měl právo zápisu do této složky, včetně všech jejích podsložek. upItems
obsahuje tyto podsložky:
- data – (pouze ve variantě JellyPot XML) – XML soubory, do kterých je ukládán veškerý obsah zadávaný přes administrační rozhraní, uživatelské účty atd. – jinými slovy to, co se v SQL verzi ukládá do databáze
- files – všechny soubory
- imgs – všechny obrázky
- temp – slouží k dočasnému uložení právě zpracovávaných souborů (upload nebo přeuložení obrázků do zvoleného rozlišení)
- trash – smazané soubory
Nahrané soubory jsou automaticky přejmenovány tak, aby neobsahovaly diakritiku, mezery nebo jiné neobvyklé znaky. Toto chování lze změnit pomocí atributu sanitizeNames
elementu Uploads v Runtime.config.
Počet souborů v jedné složce
Pokud by počet souborů v libovolné složce přesáhl 1000, JellyPot automaticky vytvoří podsložku s novým pořadovým číslem (001, 002, 003, …) a soubory začne ukládat do ní. Na NTFS sice není žádný praktický limit, kolik souborů může v jedné složce být – ale pokud jich je hodně (v případě systému JellyPot jsme za hodně prohlásili 1000), je zobrazení obsahu složky ve Windows Explorer nebo v jiném souborovém manažeru pomalé. Rychlost zobrazení obsahu složky samozřejmě nemá žádný vliv na funkci systému JellyPot, opatření je pro případ prohlížení složek přímo na serveru nebo přes FTP.
Kontrola souborů
V administračním rozhraní je v Media Admin Tools / Kontrola a přeuložení obrázků a souborů k dispozici nástroj pro kontrolu souborů. Ten umožňuje zjistit:
- zda existují všechny soubory odkazované v databázi (nebo XML)
- zda obrázky mají vygenerována všechna rozlišení definovaná v Site.config
- zda všechny soubory mají vyhovující jména (viz atribut
sanitizeNames
elementu Uploads v Runtime.config)
O všech nalezených chybách je zobrazen podrobný report. Zároveň je možné nechat JellyPot opravit případně chyby ve jménech souborů a vygenerovat chybějící rozlišení obrázků (za předpokladu, že chybějící rozlišení je menší než největší uložené).
Mazání souborů
Při odstranění libovolného souboru v administraci, popřípadě smazání prvku kolekce, který daný soubor obsahoval, je pouze zrušen odkaz na soubor v databázi. Soubor je však fyzicky na disku ponechán na svém místě. Pokud bychom tedy naimportovali obsah databáze před smazáním souboru, vše by fungovalo správně, linky odkazující na smazaný soubor by byly funkční.
Mazání souborů totiž bývá jen těžko vratný proces a proto k tomu JellyPot přistupuje opatrně. To ale zároveň znamená, že ve složkách pro nahrané soubory a obrázky se postupně hromadí neužitečná data. Pro úplné smazání souboru je třeba provést tyto kroky:
- Odstranit soubor (resp. obrázek) v administraci – tím se odstraní odkaz z databáze.
- Fyzicky přesunout všechny odstraněné soubory do složky
trash
. To se provede pomocí nástroje Media Admin Tools / Smazání obrázků a souborů v administraci – JellyPot projde všechny soubory ve složkách pro upload a ty, na které nenajde žádný odkaz v databázi, přesune do složkytrash
. Toto provede bez ohledu na to, odkud se soubory původně vzaly. Pokud tedy byly do složky např. nahrány přes FTP, přesune je dotrash
také. - Smazat obsah složky
trash
, obvykle ručně přes FTP. (Tento krok odpadá při nastavení atribututrashMethod="delete"
elementu Uploads v Runtime.config – v takovém případě se soubory v kroku 2 rovnou mažou.)
Změna výchozí složky pro ukládání souborů
Výchozí složky pro ukládání souborů je možné změnit jedním z těchto způsobů:
- pomocí elementu Paths v Runtime.config na úrovni jednotlivých výchozích složek
- pomocí atributu
path
na úrovni jednotlivých polí v deklaraci typu v Site.config, viz např. pole typu<File>
- pomocí atibutu
securePath
u jednotlivých polí, viz Zabezpečení před neoprávněným přístupem k souboru nebo obrázku
Při změně výchozích složek je dobré si dát pozor na následující:
- Není vhodné používat pojmenování složek 001, 002, … 999, neboť toho využívá JellyPot a mohlo by dojít ke kolizi.
- Změna v definici Paths a SecurePaths v Runtime.config se projeví u již nahraných souborů. Soubory nahrané před změnou je tedy potřeba ručně přesunout na nové umístění.
- Po jakékoliv změně umístění souborů doporučujeme provést kontrolu, viz odstavec Kontrola dostupnosti souborů výše v textu.