IIS7 ファイルアップロード用ページを簡単に作成する方法

ASP.NET が動作するように構成された Web サイト向けの、ファイルをアップロードするページを紹介したいと思います。

Web サイトを運営していると、ユーザーにファイルをアップロードさせたいというニーズが発生する場合があります。

FTP や WebDav を構成できるのであれば、それを使用してもいいのですが、ブラウザベースで行いたい場合は、サーバーサイドで動作するファイルアップロード用のプログラムを用意する必要がありました。

IIS7 でも、サーバーサイドで動作するコードを記述する必要がありますが、必要となるコードの量は存外に少なく、簡単なページでファイルアップロードの機能を実装できます。

以下に手順を示します。

手順

  1. ASP.NET が動作するように構成された Web サイト、あるいは仮想ディレクトリを用意します。
    ※前回までの記事で紹介したような Web フォーム認証が動作する環境であれば問題ありません。
     

  2. 同 Web サイトの物理フォルダにに upload という名前でフォルダを作成し、アカウント NETWORK SERVICE に対し、"変更" の権限を付与します。
     

  3. Web サイトが使用しているアプリーションプールの実行アカウントを NETWORK SERVICE を変更します。
    変更の仕方が不明な場合は、以下のドキュメントを参照してください。

    『IIS 7.0: アプリケーション プールの ID を指定する』 
    https://technet.microsoft.com/ja-jp/library/cc771170(WS.10).aspx

  4. 以下の内容をテキストエディタに貼り付けて、upload.aspx という名前で保存し、Web サイトに配置します。

    <%@ Page Language="C#" %><script runat="server">    string resultMsg;    protected void uploadButton_Click(object sender, EventArgs e)    {        string fileName = FileUpload1.FileName;        PlaceHolder1.Visible = false;        PlaceHolder2.Visible = true;        try        {            FileUpload1.SaveAs(Request.PhysicalApplicationPath + "\\upload\\" + fileName);            resultMsg = "ファイル \"" + fileName + "\" をアップロードしました。";        }        catch(Exception exp)  {     resultMsg = "ファイルのアップロードに失敗しました。<br />原因 : " + exp.Message;        }     }</script>

    <html><head runat="server">    <title></title></head><body>    <form id="form1" runat="server">    <asp:PlaceHolder ID="PlaceHolder1" runat="server">    <!-- アップロード前の画面 -->     <asp:FileUpload ID="FileUpload1" runat="server" /> <br />        <asp:Button ID="uploadButton"   runat="server" onclick="uploadButton_Click"   Text="アップロード" />    <!-- ここまで --->    </asp:PlaceHolder>    <asp:PlaceHolder ID="PlaceHolder2" Visible="false"  runat="server">    <!-- アップロード後の画面 -->  <%=resultMsg%>    <!-- ここまで --->    </asp:PlaceHolder>    </form></body></html> 

  5. ブラウザから配置した upload.aspx にアクセスします。

 

  • 以下のような、ファイルアップロード用の画面が表示されるので、[参照] ボタンをクリックしてファイルを選択後、[アップロード] ボタンをクリックして実際にファイルがアップロードがされるかご可能ください。

なお、アップロードされたファイルは、Web サイト内の upload フォルダに保存されます。

ファイルの保存場所を変更するには、ソースコード中の \\upload\\ を、任意のフォルダ名に変更してください。ちなみに、フォルダ名 "upload" の前後がフォントの関係でバックスラッシュ (\) で表示されていますが、正しくは "¥¥upload¥¥" です。

お手数ですが、コードを試すさいには修正してお使いくださいませ。

※タイトルに "IIS7" と書いてますが、このファイルアップーロード用のページについては IIS6.0 でも、ASP.NET が動作する環境であれば動作すると思います。

それと、ユーザーからアップロードされるファイルの種類、ファイルが使用するディスクサイズが気になる場合は、以前このブログで紹介したファイルスクリーンと、ディスククォータの機能を組み合わせると良いでしょう。

Real Time Analytics

Clicky