V minulém článku jsem vám předvedl, jak lze snadno a jednoduše udělat rozhraní pro download. Dnes jej doplním o statistiku počtu stažení jednotlivých souborů.

Celá statistika bude založena na textových souborech, které budou uloženy v adresáři STATS. Tento adresář je pro správnou funkci aplikace vytvořit v adresáři ve kterém jsou uloženy soubory určené ke stažení. Pro každý stahovaný soubor je v adresáři STATS vytvořen textový soubor stejného jména jaká je plné jméno (tedy i s příponou) soubor ke kterému statistika náleží.

Nejprve provedeme úpravy, které zajistí, že při stažení souborů dojde k inkrementaci počtu stažení souboru Do souboru download.asp doplníme proceduru stat, která tuto činnost vykoná.

sub stat(FilePath)
   FILE_FOLDER = left(FilePath,inStrRev(FilePath, „\“))
   STAT_FOLDER=FILE_FOLDER &“STATS“
   STAT_FILE = right(FilePath,len(FilePath)-inStrRev(FilePath, „\“))
   on error resume next
   dim objfs,objfile
   set objFS=Server.CreateObject(„Scripting.FileSystemObject“)
   set objfile=objfs.opentextfile(STAT_FOLDER&“\“&STAT_FILE&“.txt“)
   if err.number<> 0 then
      pocet=1
   else
      pocet=0
      pocet=objfile.readall()
      pocet=pocet+1
   end if
   set objfile=objfs.createtextfile(STAT_FOLDER&“\“&STAT_FILE&“.txt“,true)
   objfile.write(pocet)
   objfile.close
   set objfile=nothing
   set objfs=nothing
end sub

V proceduře je učiněn pokus o otevření souboru s údajem o počtu stažen souboru. V případě neexistence souboru se statistikou je nastaven počet stažení na 1. Pokud se soubor se statistikou podaří otevřít je z něj přečten údaj o počtu stažení, který je následně zvýšen o jedničku. Poté je vytvořen nový textový soubor (pokud existuje je přepsán) do kterého je zapsán aktuální počet stažení.

Vykonávání této procedury zajistí umístění jejího „volání“ na konec souboru download.asp. Příkaz, který toto učiní vypadá takto:

stat(strFilePath)

Většina z vás určitě bude chtít doplnit rozhraní pro download o zobrazení počtu stažení jednotlivých souborů a následně i podle tohoto údaje provádět řazení výpisu souborů. Co je proto nutné udělat ?

Nejprve je třeba vytvořit funkci, která umožní na základě předaného jména souboru získat údaj o tom kolikrát byl soubor stažen. Informace o počtu stažení souborů je čerpána z textového souboru jehož jméno odpovídá plnému jménu příslušného souboru.

Function stat(FilePath)
   FILE_FOLDER = left(FilePath,inStrRev(FilePath, „\“))
   STAT_FOLDER=FILE_FOLDER &“STATS“
   STAT_FILE = right(FilePath,len(FilePath)-inStrRev(FilePath, „\“))
   on error resume next
   dim objfs,objfile
   set objFS=Server.CreateObject(„Scripting.FileSystemObject“)
   set objfile=objfs.opentextfile(STAT_FOLDER&“\“&STAT_FILE&“.txt“)
   if err.number<> 0 then
      pocet=0
   else
      pocet=0
      pocet=objfile.readall()
   end if
   stat=pocet
end function

Pokud se nepodaří soubor se statistikou otevřít znamená to, že soubor statistiky neexistuje protože soubor k němuž statistika náleží nebyl dosud stahován. Pokud se soubor se statistkou podaří otevřít načteme z něj informaci o počtu stažení, kterou předáme jako návratovou hodnotu funkce stat.

Abychom mohli podle údajů o počtu stažení souboru bezproblémově provádět řazení je třeba tento údaj ukládat do pole FileArray. To provedeme pomocí tohoto příkazu:

FileArray(intCounter, 5) = stat(objFile.Path)

Pozorný čtenář si jistě hned uvědomí, že pole FileArray máme nadeklarované tak, že maximální index je 4. Tento nedostatek napravíme nahradou řádku

ReDim Preserve FileArray(objFolder.Files.Count,4)

tímto řádkem, který nadefinuje větší rozsah pole FileArray:

ReDim Preserve FileArray(objFolder.Files.Count,5)

Poslední úpravou, kterou je třeba provést je doplnění dalšího sloupce do hlavičky tabulky. Pro přehlednost uvádím celý řádek tabulky.

<tr>
   <td class=bunka><a href=“default.asp?sort=name“>Jméno souboru</a></td>
   <td class=bunka><a href=“default.asp?sort=type“>Typ souboru</a></td>
   <td class=bunka><a href=“default.asp?sort=size“>Velikost souboru</a></td>
   <td class=bunka><a href=“default.asp?sort=dtmod“>Poslední změna</a></td>
   <td class=bunka><a href=“default.asp?sort=pocet“>Počet stažení</a></td>
</tr>

Minule jsem slíbil dvě varianty pro sledování statistiky stažení souborů. Dnes jsem předvedl jak lze statistiku vyřešit pomocí textových souborů. Příští týden vám předvedu druhou variantu, která bude postavena na zcela jiném základu. Kompletní kód fungující aplikace ve kterém jsou provedeny veškeré dnešní změny je ke stažení zde.

Žádný příspěvek v diskuzi

Odpovědět