SendFile (WBIK)

Formßt bloku:

SendFile: v²raz_typu_string_nebo_BLOB

P°φkaz odeÜle v²razem zadanou hodnotu do browseru. Pou₧φvß se tehdy, kdy je t°eba browseru poslat n∞jakß binßrnφ data znßmΘho formßtu (obrßzek, dokument apod.). SouΦasn∞ s tφmto p°φkazem je t°eba nastavit vhodn² Content-type dokumentu.

Vφce informacφ o uklßdßnφ soubor∙ do databßze a odesφlßnφ soubor∙ do browseru naleznete zde.

P°φklad:

K odeslßnφ souboru, kter² je ulo₧en v tabulce, do browseru se pou₧ije nßsledujφcφ HTW Üablona. Pro nßsledujφcφ v²klad je pojmenovßna Getfile.htw, p°edpoklßdejme, ₧e chceme poslat soubor, jeho₧ jmΘno je p°edßvßno do Üablony ve vstupnφ formulß°ovΘ prom∞nnΘ filename:

<html>
<head>
<title>Soubor neexistuje</title>
</head>
<%wbc%>
SQLStatement: soubor
+ SELECT content,content_type FROM Files
+ WHERE filename="%filename%"
EndSQLStatement;
; pokud takov² soubor existuje
#if soubor#>0
; zkontrolovat, zda nenφ Content-type prßzdn²
#if soubor[0].content_type==""
; pokud ano, nastavit obecn² Content-type
Content-type: "application/octet-stream"
#else
; nastavit Content-type
Content-type: soubor[0].content_type
#endif
; poslat soubor
SendFile: soubor[0].content
#endif
<%/wbc%>
<body>
<!-- tato strßnka se sestavφ a odeÜle jedin∞ tehdy, pokud se neprovede SendFile -->
<h1>Soubor neexistuje</h1>
Soubor <%filename%> nenφ v databßzi!
</body>
</html>

Lokßlnφ Üablona se pou₧ije jen tehdy, pokud se v²sledn² dokument negeneruje p°φkazem SendFile zaslßnφm proudu bajt∙ p°φmo browseru.

Nastavenφ sprßvnΘho jmΘna souboru p°i uklßdßnφ dokumentu browserem

HTTP protokol nedisponuje p°φkazem (HTTP hlaviΦkou), kter²m by se browseru mohlo nastavit jmΘno souboru, do kterΘho se mß dokument zobrazen² browserem ulo₧it. JmΘno souboru browser odvozuje podle URL. V p°φpad∞, ₧e chceme zobrazit soubor "obrazek.jpg" z tabulky Files, browser zobrazφ dokument s nßsledujφcφm URL:

http://www.server.cz/cgi-bin/wbcgi.exe/db/app/getfile.wbc?filename=obrazek.jpg

P°i pokusu o ulo₧enφ dokumentu browser nabφdne v "Ulo₧it jako" dialogu jmΘno "getfile.wbc", ale ne sprßvnΘ "obrazek.jpg".

K oΦekßvanΘmu chovßnφ m∙₧eme browser donutit tφmto trikem: nechßme browser zobrazit dokument s tφmto URL:

http://www.server.cz/cgi-bin/wbcgi.exe/db/app/getfile.wbc/obrazek.jpg?filename=obrazek.jpg

Pak browser p°i uklßdßnφ nabφdne jmΘno "obrazek.jpg". Internet klient p°i zjiÜ¥ovßnφ jmΘna WWW objektu Φte postupn∞ nßzev databßze, nßzev aplikace a nßzev WWW objektu. To, co je v URL za nßzvem WWW objektu a p°ed znakem "?", neΦte a ignoruje. Narozdφl od toho browser pova₧uje "getfile.wbc" za nßzev podadresß°e a teprve "obrazek.jpg" za nßzev souboru.