JavaScriptでファイルのサイズを得るには
[上に]
[前に]
[次に]
まる高
1999/10/28(木) 20:11:07
写真(画像)アルバム集を作成しています。
画像のサイズを32Kバイト以下の制限を加えたいのです。現状、アッ
プロード後、CGIプログラムで画像ファイルサイズを得て、32Kバ
イト以上である時、unlinkをかけています。
この方法では、巨大なファイルをアップロードされた時、限られたディ
スクエリアがフルになってしまう恐れがあります。
画像ファイルをアップロードする前に、JavaScriptでそのファイルサイズを
取り込む方法をどなたか、教えてください。
ふじ
1999/10/28(木) 21:30:34
#JavaScriptでファイルサイズを得る方法は分かりませんが。
私ならデータをデコードする前に、環境変数の CONTENT_LENGTH
を見て、サイズが大きかったら処理しないでエラーを出すように
作ります。
#マルチパートのヘッダとか、他のデータもくっついて来るので
#画像のサイズを厳密に処理することは出来ませんが。
まる高
1999/10/29(金) 09:10:41
ふじさん、御回答ありがとうございます。
環境変数CONTENT_LENGTHを参照できる時(かつread()を実行していな
い時)、エンコードされている送信データは、WWWブラウザ側のPCに
存在していると考えてよろしいですか。
そうであるならば、送信ファイルの大きさをある程度予測できますね。
予想ファイルサイズ=CONTENT_LENGTH/5 でいいですかね?
ふじさんの方法でやってみようかな。他の方でアイデアがあればお願い
いたします。
ふじ
1999/10/29(金) 15:24:36
>エンコードされている送信データは、WWWブラウザ側のPCに
>存在していると考えてよろしいですか。
あくまで想像ですが・・・
ブラウザが Content-Length ヘッダを付けてサーバに送信。
↓
サーバはそのヘッダを見て環境変数 CONTENT_LENGTH をセットして
CGIのプロセスを起動。送られてきたデータをCGIに送りはじめる。
↓
CGIで環境変数を見て処理するかどうか決める。
という流れだとしますと、送信データは
・通信経路の途中
・サーバ機のメモリ上(httpd?)
・サーバ機のテンポラリファイル
辺りにあるのかなあ・・・
#数10MBのファイルを送っても、特に httpd のプロセスのメモリ
#使用量が増えた様子はないので、httpd はテンポラリに書き出しているのかも。
>予想ファイルサイズ=CONTENT_LENGTH/5 でいいですかね?
ファイルが5つ同時に送られて来るのですか?
<FORM ENCTYPE="multipart/form-data">
で送られて来る場合のデータは、
-----------------------------26029295725112
Content-Disposition: form-data; name="AAA"; filename="hogehoge.gif"
Content-Type: image/gif
(GIFのバイナリ)
-----------------------------26029295725112
Content-Disposition: form-data; name="AAA"; filename="hogehoge.jpg"
Content-Type: image/jpeg
(JPEGのバイナリ)
-----------------------------26029295725112--
の様になっているので、
ファイルサイズ = CONTENT_LENGHT - マルチパートのヘッダ部分
となります。
まる高
1999/10/29(金) 22:33:38
>ファイルサイズ = CONTENT_LENGHT - マルチパートのヘッダ部分
>となります。
ついぞ、エンコードされると%nnになるので、万が一漢字含みの場合を
想定して%nnnnになるケースを考え、CONTENT_LENGTH/5かなと思いました。
認識の誤りでした。勉強になります。
まる高
[HomePage]
1999/11/01(月) 09:47:35
[[解決]]
ふじさん、ありがとうございました。
ちなみに、小生のHPの『まる高マラソン大会』の写走館(アルバム)
のページを生成するCGIプログラムに導入させて頂きました。
[上に]
[前に]
[次に]