WebMatrix でファイルのアップロード(2) の補足

執筆日時:

f:id:daruyanagi:20120820014842p:plain

デカいファイルをアップロードしようとすると発生するのだけれど、この例外をトラップするのが面倒……。無理やり頑張ってトラップしてみたのだけれど、 try 文がやたらネストするし、 Request に少しでもアクセスしようものなら発生するので IsAjax が取れずに少し困っている。

WebMatrix でファイルのアップロード(2) - だるろぐ

思いついたのだけれど、無理してビューまたは Json を返そうとしなくてもステータスコードだけ返せばいいな。最初にわざとエラーを発生させるコードを書いてそこで return してしまえば、 try……catch 文のネストを減らせるし。

@{
try // Catch Request-too-long Error
{
var dummy = Request.Files;
}
catch (Exception e)
{
Response.StatusCode =
(int) HttpStatusCode.InternalServerError;
Response.Write(e.Message);
return;
}

if (IsPost) { : :

これをするとどうなるのかというと、

f:id:daruyanagi:20120820210027p:plain

まず、デカいファイルを投げる(既定では約4MB以上)。

f:id:daruyanagi:20120820210114p:plain

サーバーでエラーが発生し、ステータスコード(よくわからんけど5**)を返す。

f:id:daruyanagi:20120820210207p:plain

$.ajax() の error プロパティでそれを拾って……

f:id:daruyanagi:20120820014842p:plain

HTML を更新する。ブラウザーからアクセスしたときは、まぁ、なんかエラー画面が表示されるのだろう。とりあえずこれでいいか。