Rozhraní pro download souborů pomocí ASP – statistika

    0

    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