ASP.NETの小技!―大きなファイルをアップロードできるようにする

最近、「新館」の方をいろいろいじくっている。残念ながら、その成果はまだ公開できる状態にはなっていないのだが、その過程でもいろいろネタは溜まっていく。ということで、今回はそのうちのひとつ、「大きなファイルをアップロードできるようにする」である。

ASP.NETの標準では、セキュリティを考慮して4GBを超えるサイズのファイルのアップロードを許可していない。以前は気にならなかったこの制限も、写真ファイルのサイズが4GBを超える最近では、現実的な問題となってきた。そこで、その制限を除去しようと思い立ったのである。幸い、アップロードは自分で行うもので、第三者に公開している機能ではないので、セキュリティ的な驚異にはならないと考えている。

具体的には、machine.configファイルに<httpRuntime>セクションを加え、パラメータmaxRequestLengthに上限のサイズをKB単位で与えるだけである。ただし、自前のサーバならともかく、ホスティングなどでmachine.configファイルを触ることができない場合、web.configファイルを書き換えればよい。

書き換える場所は、<system.web>セクションである。ここにパラメータmaxRequestLengthとともに<httpRuntime>セクションを加える。

<system.web>
    <httpRuntime maxRequestLength="8192" />
    ………

この場合、8MBが上限となる。

この制限に気付いたのは、アップロードできる写真とできない写真があることに気付き、アップロードできないときにはIE8が「このページはInternet Expolorerでは表示できません。」といったエラー画面を表示することからだ。最初は何のことかわからず、説明を見てもネットワークの接続に問題がある、DNSにエラーがあるとかそんなことばかりなので、ローカルのテストにまさかそんなことはあるまいと思っていたのだが、真相は上記のようなことだったのだ。

もう少しまともにエラーメッセージを返してくれると助かる。というか、返せといいたい。まぁ、HTTPの構造上、アップロードされる前に何とかしなければならないから、ネットワーク的にエラーとするしかないというのはわかるが。これは、IE8の問題というよりも、ASP.NETの問題だろう。

コメント