JSP ページからアップロードされているファイルのサイズが設定されたサイズ制限を超えているかどうかをクライアント側のブラウザーで検証する方法はありますか?
可能であれば、Flash や ActiveX などの独自のコントロールや技術には近づきません。
ありがとう!
JSP ページからアップロードされているファイルのサイズが設定されたサイズ制限を超えているかどうかをクライアント側のブラウザーで検証する方法はありますか?
可能であれば、Flash や ActiveX などの独自のコントロールや技術には近づきません。
ありがとう!
これは完全な解決策ではありませんが、Content-Length HTTP ヘッダーをチェックするとrequest.getHeader("Content-Length")
、ファイル全体を転送しないことを選択できます。
説明のとおり、非常に大きなファイルは一度に転送されません。POST データのチャンクを表すストリームを実際に開き、全体を転送するためにそこから読み取る必要があります。
一方、DoS 攻撃が心配な場合は、Content-Length ヘッダーは簡単に偽造される可能性があるため、本当に信頼することはできません。この場合、制限を設定してこのファイルの転送をストリーミングし、その制限を超えたらすぐに停止する必要があります。
Flash の決定を再考し、YUI Uploader を参照することをお勧めします。
http://developer.yahoo.com/yui/uploader/
とりわけ、fileSelect イベントは、選択された直後でアップロードされる前に、選択されたファイルのサイズをバイト単位で通知するので、それに応じて制限することができます。
JSP や PHP を使用すると、アップロードが完了するまでページがリクエストを受け取れないため、ファイル サイズを制限することはできません。その時点で、ファイルを保存しないことを決定できますが、それでは遅すぎる可能性があります。
MyUploaderやHermesなど、いくつかの Java ソリューションがあります。複数のファイルのアップロードと部分的なアップロードの再開をサポートするものもあれば、ソース コードを提供するものもあります。独自に作成することもできますが、ローカル ファイルシステムにアクセスする必要があるため、機能するには署名付きアプレットである必要があります。Web サーバーとして Apache を使用している場合は、特定の時間にアップロードされるすべてのファイルのメモリにファイル サイズ全体を収めるのに十分な RAM がマシンに必要です。