ウェブのファイルアップロード機能についての質問です。


一般的な開発方法の場合は、サーバーへ通信後、サーバー側でファイルサイズを見て判別するかと思いますが、100Mバイトなどの重いファイルの場合、ファイル送信後にエラーとなり、非常に時間が掛かるため、OS側で通信前に判断できればと思います。

具体的には、フォームで「参照」というボタンを押し、ファイルを選択した時点でファイルサイズを調べて、一定以上のサイズならエラーを出したいのですが、VBscriptを使う方法以外でオススメの方法はありますか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/09/21 15:15:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:satoshionoda No.1

回答回数13ベストアンサー獲得回数3

ポイント23pt

Flashならば、FileRefference Classを使用するとアップロード前にサイズを確認できますよ。

MACでも動きますし、VBSよりはよいかと。

http://livedocs.adobe.com/flash/9.0_jp/main/wwhelp/wwhimpl/commo...

id:logihot

ありがとうございます。FlashやActionScriptはやったことがないので、他の方法があれば、そちらも教えてくださいますと嬉しいです

2009/09/14 17:38:23
id:dica33 No.2

回答回数37ベストアンサー獲得回数3

ポイント23pt

「VBSを使わない」という条件であれば、やはりJavascript等も不可になるのでしょうか?

開発環境についての記述が見られないので、今回PHPについてお話しますが、HTMLフォームでMAX_FILE_SIZEを指定する事で、そのサイズを超えたファイルが送られた際に例外を発生させる事は出来ます。

この方法ですと事前にOS側で判断するという条件は満たしませんが、ファイル送信後に例外という事にはなりません。

VBSの話が出る処を見るとASPかな?とも思ったのですが、もうASPは使われていとも思うので…。

id:logihot

VBSはmacでは動作しないなど、OS依存が高いとお聞きしているため、対象外としております。jsで対応できるなら、jsのほうがありがたいです。

なお、MAX_FILE_SIZEですが、実際に試してはいたのですが、例外を発生させることはできましたが、実際にサーバー送信後に例外発生をさせるようでして、PHPマニュアルの説明と挙動が違っているので、戸惑っております。

2009/09/16 15:35:16
id:nasust No.3

回答回数2ベストアンサー獲得回数1

ポイント22pt

1の回答と被りますが、FlashのFileRefference Classでファイルのサイズを取得して、JavascriptとFlashが相互に情報のやりとりできるexternalinterfaceを使用することで、javascriptで例外が出せます。

id:logihot

FlashやActionScriptはやったことがないので、他の方法があれば、そちらも教えてくださいますと嬉しいです

2009/09/16 21:38:01
id:u6k No.4

回答回数7ベストアンサー獲得回数0

ポイント22pt

例えば、Javaになりますが、ファイルアップロード用のAppletを開発すれば、ブラウザ側でファイルサイズのチェックが可能ですね。ただ、制限がかかりますが。

方法はいろいろあると思いますが、希望する開発言語、使用環境(社内・社外など)を公開できる範囲で書いてみてはいかがでしょうか。

  • id:nasust
    3の回答者です。自分が知っている限りでは、純粋にJavaScriptだけで、ファイル情報を取得するには、Adobe Airでしか無いと思います。通常のブラウザから取得する方法は無いと自分は認識しています。

    他に考えられるのは、Javaアプレットを使用して、JavaScriptと連携するとかぐらいかと思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません