• ベストアンサー

ファイルUpload時にファイルサイズの制限を設ける方法

質問があります。 INPUT TYPE=fileを使用してサーバーにファイルをアップロード処理を行うのですが、その際サイズの大きいファイルをアップロードしようとすると、エラーになってしまいます。 そこで、制限を設けて何バイト以上のファイルはアップロードできませんというようなメッセージを表示したいのですが、なにか方法はありませんでしょうか。 ご存知の方、情報をお待ちしています。 環境はWindows 2000 Server IIS 5.0 テストをしているブラウザは、IE5.0です。 よろしくお願いします。

  • 80yen
  • お礼率74% (123/165)

質問者が選んだベストアンサー

  • ベストアンサー
  • BlueRay
  • ベストアンサー率45% (204/453)
回答No.1

回答がないようなので・・・。 参考URLがズバリではないでしょうか。 http://www.openspc2.org/JavaScript/NewLib/special/filesize/ ちなみに、検索エンジンで検索すれば見つかりますよ。 検索エンジン:Google 検索単語:javascript ファイルサイズ 取得

参考URL:
http://www.openspc2.org/JavaScript/NewLib/special/filesize/
80yen
質問者

お礼

ありがとうございます。 この頁通りにやってみたのですが、 画像ファイルのサイズしかとれなかったので、 別の方法を考える事にしました。 ブラウザのバージョンの差でうまくいかないのかもしれませんね。 javascriptからvbscriptを呼び出してファイルのサイズを測る方法にしました。

関連するQ&A

  • 大容量のファイルアップロードについて

    どうしても分からず、質問いたします。 自宅サーバを構築しPHPのブラウザによる大容量ファイルアップロードが可能にしようとしています。 (2GBくらいのファイルでもアップロードしたい) しかし、外側からアップロードを行う際、数十MBまでなら可能ですが、それ以上になると 途中までアップロード処理しているようですが、ページが表示されませんのエラーや、アップロードの処理が中断してしまいます。 ご教授お願い致します。 ■フォーム側の設定(MAX_FILE_SIZE値) <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="2048000000"> ■php.iniの主な変更箇所 memory_limit = -1 max_input_time = 6000 max_execution_time = 60000 upload_max_filesize = 2000M post_max_size = 2000M ■以下サーバの環境です。 OS:Windows2000 SP4 IIS5.0 メモリ:512MB PHP:5.2.5 よろしくお願い致します

    • 締切済み
    • PHP
  • ファイルサイズ制限について

    いつもお世話になります。 perlのプログラムファイルアップロードをよく見るとでファイルサイズ制限をしている箇所があります。 たとえば以下のステートメントです。 $BUFSZ = 2048; $file_size ++; if($file_size > 300){ exitError("ファイルサイズが大きすぎます。600KB 以下にして下さい。"); この場合$BUFSZ = 2048; とはいったい何なのでしょうか? また上記例ではファイルサイズ600Kに制限されておりますが、300を超えた場合にエラーに成るようです。これは2Kをかけたものが実ファイルサイズという事に成っているのでしょうか? どなたかご教示願います。

    • ベストアンサー
    • Perl
  • 大きいサイズのファイルのアップロード

    よろしくお願いします。 Webサーバー側にファイルをアップロードして、特定の人にファイルをダウンロードさせるようなコードを書き始めています。 ファイルサイズは一つのファイルで最大で50MB超あります。 ですが、Webサーバー側で一度のPOST要求で10MBという制限があり、困っています。 アップロードする側でファイルを分割してアップロードし、サーバー側でファイルを結合すればいいのですが、アップロードする人間がそのあたりを分かってくれればいいのですが、その都度ツールなどでファイルを分割して・・・というやり方を強制することが少し困難です。 SWFUpload というもの使うと、複数のファイルを一度にアップロードできるようですが・・・ 大きいファイルを分割して複数のファイルにしてアップロード・・・というようなことを Flashなどを用いてブラウザ上でワンアクションでできないものでしょうか? サーバー側での結合はすぐかけるのですが、クライアント側でどういう処理をすればいいのか、 皆目検討が付きません。 そもそも、こういった大きいファイルを分割してアップロードする、ということはできるのでしょうか?

    • 締切済み
    • PHP
  • ファイルのアップロードについて

    初めて投稿させていただきます。 今、WindowsNT4.0+SP6,IIS+ASPでファイルのアップロードを考えています。 調査している中で、basp21を使用してファイルをアップロードするところまでわかったのですが、その後すこしつまずいています。 basp21を使用してファイルを送信する場合、HTML上に<input type="file" name="strName">というタグを明記し、ファイルを送信する場合には、このタグに該当するファイルの絶対パスを明記するとは思うのですが、これを固定のファイル名にしたいのです。 試したこととして<input type="file" name="strName" value="c:\test.text">という形で明記しましたが、表示されませんでした。 ブラウザーはIE6.0およびNetscape 6.1を使用しております。 よろしくお願いします。

  • ファイルサイズがpost_max_sizeを超える場合のエラー処理について

    PHPでアップロードファイルのサイズチェックに関する処理で困っています。 アップロードファイルのサイズチェックを行う場合はPHPスクリプト内でスーパーグローバール変数の$_FILES[フォーム名]['size']からサイズチェックを行うのが一般的であると考えています。 ところが、php.iniのパラメーターpost_max_sizeを超えるサイズのファイルをアップロードしようとするとファイルのアップロードが行われないため$_FILES[フォーム名]['size']でのチェックも行えずユーザーにファイルサイズに起因するエラーであることを通知することが出来ません。 そこで、お知恵をお借りしたいのはpost_max_sizeを超えるサイズのファイルをアップロードした際(またはしようとした際)に、ユーザーにファイルサイズに起因するエラーであることを知らせる方法はあるのでしょうか? 方法の例として以下の2つを見つけたのですが、いずれもユーザーに的確にエラーを返すことが出来ません。 1.HTMLのFORMタグ内にMAX_FILE_SIZEを指定する。  → 指定した値より大きなファイルをアップロードすると画面がリロードされたような動きとなりフォームがクリアされます。 PHPスクリプトに処理がわたらないようでユーザーにエラーを返せません。(IE8 / Apache2.2 + PHP5の場合) 2.ブラウザ側スクリプトでファイルサイズを取得する  → IE限定の方法しかないためIE以外でも可能な方法を期待しています。 なにか良い方法をご存知の方はお力を貸してください。

    • ベストアンサー
    • PHP
  • file upload でリセットが効かない

    WEBプログラミング初心者でよくわからないので、教えてください。 以下のHTMLで、一旦ファイルを参照しテキストにファイルパスが表示された後、リセットして空白にしても、アップロードをクリックすると、ファイルがアップロードされてしまいます。リセットできないのでしょうか? <form enctype="multipart/form-data" action="XXXXX.php" method="POST"> <table border="0" cellspacing="0"> <tbody> <tr> <td height="30"><input type="submit" value="ファイルをアップロード" name="btnUpload"></td> <td height="30"><input type="reset" value="リセット" name="btnReset"></td> </tr> <tr> <td height="30"><div align="center"><font size="3">在庫CSVファイル:</font></div></td> <td height="30"><input type="file" name="ZaikoUploadfile"></td> </tr> <tr> <td height="30"><div align="center"><font size="3">入庫CSVファイル:</font></div></td> <td height="30"><input type="file" name="NyukoUploadfile"></td> </tr> </tbody> </table> </form>

  • ファイルアップロード時のファイルサイズ変更について

    お世話になります。 getimagesize関数を使用して、ファイルサイズを取得して、その後ファイルサイズの 縮小等の処理を行うのは可能なのですが、ファイルをアップロードするタイミングで 強制的にファイルサイズを変更することは出来るのでしょうか? 大きいファイルサイズの場合、アップロードに時間が掛かってしまうのと、サーバに負荷が 掛かってしまうのが気になりますので、出来ればアップロード処理とファイルサイズ変更を 同時に出来れば・・・と思っています。 ヒントとなるスクリプトをご教示いただければとても助かりますが、参考になるサイト等を ご存知でしたら教えていただきた存じます。 PHPのバージョンは、5.3.3です。 どうぞよろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • BASP21のファイルアップロードでエラー

    IIS7.0の環境にBASP21をインストールして、ブラウザからのファイルアップロードを処理しようとしています。BASP21は、BASP21-2003-0211.exe をインストールしました。 症状は、ブラウザ(MSIE 7.0.5730.13)からファイルアップロードをすると、うまくいくときもあるし、うまくいかないときもあるという感じです。 うまくいくときは FormSaveAs でファイルが保存され、そのファイルを読み出して処理することができます。 うまくいかないときは FormSaveAs が -2(名前が見つかりません)を返し、ファイルが保存されません。 HTMLのフォームの部分は以下のようになっています。 <form enctype="multipart/form-data" method=POST action="upload1.asp"> <input type="hidden" name="MAX_FILE_SIZE" value="3000000"> ファイル名:<input type="file" name="userfile" size="60"><br /> <input type="submit" value="ファイルを送信"><br /> </form> 同じファイルを何度も送信して試してみたところ、a = Request.TotalBytes のところで、a にセットされる値が変わることがわかりました。 テストに使ったファイルでは、うまくいくときは 818 になり、うまくいかないときは 821 になりました。ファイルそのものは 413 バイトなので、付加されるヘッダ情報に違いがあるのではないかと思いました。 そこで、パケットモニタを使用して送信されるデータを見てみたところ、boundary= の後ろに指定される文字の長さによって動きが変わってくるように見えました。 マイナス連続の後ろが 7d934f3211530(13文字)→NG マイナス連続の後ろが 7d9274d11530(12文字)→OK 送信フォームの中にはパーツが2つあり、末尾のboundaryも含めて3つになりますので、1文字違うと合計で3バイト違ってきますので計算は合います。 このあたりの情報は、どこかにないでしょうか?BASP21の使い方が悪いのか、HTMLやASPの書き方が悪いのか、わからないので困っています。

  • 調査方法を教えてください

    今、silverlighjt5で開発を行っていますが、ファイルサイズが70Mぐらいならアップロードできますが 80Mになるとアップロードできません。原因を調査したいのですが、何処をどう調査したら良いか判りません。何方かアドバイスをくれたら助かります。 宜しくお願いします。 開発環境 クライアントOS:windows7 サーバOS:windows 2008サーバ 開発ソフト:Microsoft visual studio2010 使用言語:silverlight5、VB.net IISの設定:要求のフィルタリングの要求制限に500Mを設定 web.configの設定:maxRequestLengthに1Gを設定 -------------------------------------------------------------------- 自分なりに調べた結果 1.IISのログ (1)アップロード成功時   ・status:200(正常)    ・受信ファイルサイズ:100Mぐらい (2)アップロード失敗時   ・status:200(正常)    ・受信ファイルサイズ:4Mぐらい 2.呼び出されるサーバ側の処理ルーチンに、実行されたらファイルにログ出力する処理を追加して確認 (1)アップロード成功時     ファイルに出力されている。 (2)アップロード失敗時     ファイルに出力されていない。 3.イベントビューア   (1)サーバー側のイベントビューア(アプリケーション、システム)を確認したが成功時、失敗時      共に出力されていない。 4.クライアント側の処理にサーバ処理を依頼するルーチンとサーバから戻ってきたルーチンにcatchを記述した。  (1)結果:サーバから戻ってきたルーチンのcatchのex.messageで未処理の例外が発生との事 以上の事から、自分ではアップロード失敗時にはサーバまで処理が行っていなくて通信の何処かでエラーになっているのではないかを思っています。 何処を、どのように調査したら原因が掴めるのか判りません。 アドバイスがありましたら教えてください。 宜しくお願いします。

  • Thunderbirdで「サイズがサーバのサイズ制限」となります。

    Thunderbirdで「サイズがサーバのサイズ制限」となります。 仕事用でMacを使っていて、今まではメーラーにMS Entourage 2004 for Macを使っていました。 終了時にうまく終了できなく、フリーズすることが度々あったので、最近、メーラーをThunderbird 3.0に変えました。 仕事の都合上、かなり大きなファイルもメールでやりとりすることが多いのですが、今まで(Entourage)は30MBや50MBのファイルでも問題なく送受信できていました。 もちろん、クライアントも自分も容量制限は100MB以上に設定してあっての話です。 それで、Thunderbirdに変更して、11MB(圧縮した状態)のファイルを添付して送ろうとしたところ、「メッセージのサイズがサーバのサイズ制限 (10485760 bytes) を超えたため、メッセージを送信できませんでした。メッセージのサイズを小さくしてから再度試してください。」とエラーが出て送れませんでした。 クライアントだけではなく、自分自身にも送ってみましたが、やはり送ることはできませんでした。 大きなファイルも送れるようにするにはどうしたらいいのかご教授ください。 よろしくお願いします。 追:いろいろ調べたところ、「Entourageは自動的に分割しているから送れる」とかいう記事も見つけましたが、自分の環境がそれに対応しているかはわかりません。

専門家に質問してみよう