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 を指定する』 
    http://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

Comments (0)

Skip to main content