スレッド表示 | フラット表示〕 全トピック 920 件中 64 番目 次≫ ≪前

アップロードするファイルのサイズチェックについて

created: 2008-01-09 18:13 | modified: 2008-01-11 14:28 | reply: 3

[4086] アップロードするファイルのサイズチェックについて

user: 長谷川 | created: 2008-01-09 18:13
掲題の件質問します。
現在使用しているサーバのphp.iniにおいてアップロード関係の設定が以下のようにされています。
 post_max_size = 24M
 upload_max_filesize = 16M
そのため、例えば30MBのファイルがアップロードされようとした場合、アップロード操作を中止しようと思っています。

アップロードそのものの仕組みを完全に理解していないのかもしれませんが、フォーム送信後、<form>のaction属性で指定したファイル上のPHPスクリプトでファイルのサイズをチェックしようとしているにも関わらず、そのチェックのスクリプトのところに至っていないようです。
そもそも上記設定によりフォーム送信の段階でサーバか何かで規定外サイズである、そのファイルの処理を止めてしまうのではないかという疑念が沸いているのですが、どうなのでしょうか?

具体的には$_FILES['hogehoge']['size']の大きさを確認し、16MB以上ならエラーメッセージを表示するようにしたいと考えています。(フォームページ上でのJavascriptでチェックできればベストなのですが、Javascriptではサイズチェックは難しいと聞いたことがあるので。)
ちなみに16MBを超えないファイルの場合は正常にアップロードできています。

よろしくお願いします。
reply: 4087 返信 編集 削除

[4087] upload_max_filesize超

user: ゆうじ | created: 2008-01-09 19:26
こんばんわ。

お察しの通り、ファイルサイズが
upload_max_filesize をこえるとアップロードは中断されます。
アップロードされないので、
PHPでファイルサイズのチェックは無理です。

[PHP]ファイルアップロードの処理
http://www.php.net/manual/ja/features.file-upload.php


アップロード時のエラーは、
$_FILES['userfile']['error']で得られるようですので
これで処理を分岐すれば目的は達せられると思います。

[PHP]エラーメッセージの説明
http://www.php.net/manual/ja/features.file-upload.errors.php


ブラウザに依存しますが、
マニュアルにあるように、先ずは
フォームでMAX_FILE_SIZEを指定してあげると
ユーザに親切かと思います。

<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Parent: 4086  reply: 4088 返信 編集 削除

[4088] Re:upload_max_filesize超

user: 長谷川 | created: 2008-01-10 10:05
ゆうじさん、有難うございます。

早速やってみました。
17MBのファイルでは想定通りエラー処理をしました。
しかし、30MBのファイルをアップロードしたところ、処理をしなかったため、$_FILES['hogehoge']['error']の値を確認したところ、NULLになっておりました。
post_max_sizeより大きいファイルサイズの場合、$_FILES側での確認はできないということでしょうか。
また、post_max_size超過のエラーコードはどこで確認できるのでしょうか。

なお、$_POSTが空の場合エラー処理を使用とも考えたのですが、別問題が発生してしまいました。
というのは、アップロード機能付掲示板を作っており、プレビュー画面処理、入力画面処理を同じファイルに記述し次の画面の状態をPOST送信してそれで表示する画面を判別しているため、この方法だと入力画面を開こうとしただけでエラー処理が動作してしまいます。

良い方法があればご教示願います。
Parent: 4087  reply: 4090 返信 編集 削除

[4090] Re:upload_max_filesize超[解決]

user: 長谷川 | created: 2008-01-11 14:28
自己レスです。
$_SERVER['CONTENT_LENGTH']のサイズは取得できましたので、それを元に判定することにしました。有難うございました。
Parent: 4088  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 64 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑