ファイルサイズの表示について

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
cojicoji

ファイルサイズの表示について

投稿記事 by cojicoji » 2005年5月24日(火) 11:56

cojicojiです。

お世話になります。

@filesize で表示されるバイト数を、MB表示に変えたいのですが、よい方法はありませんでしょうか?

例 10240000 → 10.0MB

のような感じです。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: ファイルサイズの表示について

投稿記事 by webmaster » 2005年5月24日(火) 13:00

 webmasterです。cojicojiさん、いつもご質問ありがとうございます。

 まずはそのものズバリの例を挙げます。

コード: 全て選択

<a href="{file1}"><xsl:value-of select="file1/@org" />(<xsl:value-of select="format-number(round(file1/@filesize div 102400) div 10,'###0.#')" />MB)</a>
 例として、file1というファイル項目を表示しています。結果は、例えば

 「sample.mp3(1.8MB)」

 のようになります。

 肝は、

コード: 全て選択

<xsl:value-of select="format-number(round(file1/@filesize div 102400) div 10,'###0.#')" />
 の部分です。
 「A div B」で、A割るBを表します。
 また、「round(A)」で、Aを小数点以下で四捨五入して整数に丸めます。

 バイト→MBへの変換なので、基本的には1024000で割ればOKなのですが、
小数点1桁まで四捨五入したいので、roundという命令を使っています。
 しかしroundを使うだけでは小数点1桁の情報が消えてしまうので、

 ・まず、102400(1桁少ない)で割って、
 ・結果をroundで整数に丸めて、
 ・その後、1/10にする。

 という手順を踏んでいます。
 その結果を、format-number関数を使って、小数点1桁まで表示しています。

 もし、小数点2桁まで表示したい場合は、10240で割ってroundしてから1/100する
という手順でOKです。(その場合には、format-number関数の第二引数を'###0.00'にして下さい)

 こういうご質問は他の方にも非常に役に立つと思いますので、いつも大助かりです。
 今後ともよろしくお願いいたします。m(_ _)m

 ご参考までに、XSLTで簡単な計算を行う為の情報源を添付します。

 ■XSLTスタイルシート書き方講座(2):XPathの書き方の基本
 http://www.atmarkit.co.jp/fxml/tanpatsu ... slt02.html

 ■たのしいXML:XPathとXSLTの関数【数値関数】
 http://www.cityfujisawa.ne.jp/~yanai/xm ... tep30.html

cojicoji

ファイルサイズの表示について2

投稿記事 by cojicoji » 2005年5月24日(火) 15:27

cojicojiです。

期待していたファイルサイズが表示されました。助かります。 :lol:

割と大きなファイルのアップロードを行うケースがありますので、
ユーザが意識しやすいファイルサイズの表示は必須と考えておりました。
(一般の方はByteではピンとこないですよね)

またよろしくお願いいたします。

返信