[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Core2Duoを積んだマシンをゲットした。
(T_T) うれしい・・・・
さて、
ColdFusionを使って、お気楽にディレクトリをweb公開する例のその2。
前回はcfdirectoryで一覧を取るところまででした。
<cfdirectory directory="/var/www/html/fuho" action="list" name="spf" filter="*.pdf" sort="name DESC"/>
今回は表示部分です。
<cfoutput>
<cfloop query="spf">
<div class="items">
<cfif (IsNumeric(ListGetAt(name,1,'.')) is false) or (Len(ListGetAt(name,1,'.')) neq 8)>
[#name#]←ファイル名がyyyymmdd.pdfでは無いようです....
<cfelse>
<h3><a href="./kyu/sambaweb/newspaper/#name#" target="_PDF">#left(name,4)#年 #mid(name,5,2)#月 #mid(name,7,2)#日</a> (#NumberFormat(size/1024/1024,'__._')#MB)</h3>
</cfif>
</div>
</cfloop>
</cfoutput>
いろいろ関数を使っています。
公開するルールとして、yyyymmdd.pdf形式でファイルをアップする事にしたので、そのルールに合っているかどうか一応チェックしています。相手はオツボネーゼだったりするので、何をしでかすかわかりませんから。
チェックは2種類。
ひとつは、拡張子を除いたファイル名が数字かどうかを、
IsNumeric(ListGetAt(name,1,'.'))
これでチェックしています。
IsNumeric(文字列)関数で、文字列が数字ならtrue、数字でなければFlaseが返ります。
で、拡張子.pdfを除くために、ListGetAt関数(→LiveDocs)を使っています。
left関数などを使って、「ファイル名の左から8文字とる」でも良さそうですが、そこはオツボネーゼ。何文字のファイル名になるのかわかりません。拡張子もアヤシイかもしれません。
なので、ListGetAtを使っています。
ColdFusionで言う「リスト」とは、
"1,3,5,7,11" とか "赤;青;黄色;紫" とか、決まった区切り文字を含んだ文字列です。
こいつの3番目を取り出すといった事ができます。
ListGetAt(リスト文字列 , 何番目を取るか , リストセパレータ ) という決まりなので、3つ目を取り出すにはそれぞれ、
ListGetAt("1,3,5,7,11" , 3 , ",") とすれば '5' を、 ListGetAt("赤;青;黄色;紫" , 3 , ';') とすれば '黄色' を取り出すことができます。
ListGetAt( name , 1 , "." ) は、
name(←ファイル名) をピリオドで区切られたリストと見立てて、1番目を取る。 ってことになります。
で、これが数字かどうかを判断しています。
もう一つのチェックは、その数字が8ケタかどうかをLen(ListGetAt(name,1,'.')) で、チェックしています。
まぁ、こんなチェックをしても、オツボネーゼが 20101500.pdf とか入れちゃうのは阻止できませんが、この先エラーは出なくなりますし、いくらなんでも変な日付だと気がつくと思います。
年月日の表示部分はleft関数とかmid関数なので、どんな言語でも当たり前。
その先のファイルサイズの表示ですが、
NumberFormat(size/1024/1024,'__._')
と、NumberFormat関数(→LiveDocs)を使って、少数第一位までの表示に整えています。
こいつを<cfloop query=""> で廻してるわけです。
当然、ディレクトリ内に何百もファイルがあれば、全部表示されてしまうところが「お気楽」なところですねぇ。
その辺は増えたときに考えます。はい。
情報通信を生業としない企業の、システム系でもない普通の社員なので、 ColdFusionは独学。参考書が少ないのがツライです・・・・なんだかんだ、ColdFusion4.xのシリウス時代から7年くらいのおつきあい?リンコムNextのソースが教科書かも。
外注するときはよく「できればColdFusionで・・・・」とお願いするのですが、ほとんどの場合「えっ!?」と驚かれてしまい、「SEのアサインが・・・」などと営業さんが困ってしまうことが多くて悲しいです。
ちょっとしたものなら自分でシステム構築しちゃいますが、一人でやるには時間が足りませんね・・・
FlashRemotingとかもやりますが、Flexには手を出してません。
と、最初の頃書きましたが、ついにFlexに手を出しました。Flex1.5はイマイチわかりませんでしたが、Flex2は別物ですね。これで6万円でイインデスカ?
そしてFlex2とColdFusionの組み合わせなら無敵な気がしますよ。ほんとに。
01 | 2025/02 | 03 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |