Ask Learn
Preview
Please sign in to use this experience.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
ASP.NET が動作するように構成された Web サイト向けの、ファイルをアップロードするページを紹介したいと思います。
Web サイトを運営していると、ユーザーにファイルをアップロードさせたいというニーズが発生する場合があります。
FTP や WebDav を構成できるのであれば、それを使用してもいいのですが、ブラウザベースで行いたい場合は、サーバーサイドで動作するファイルアップロード用のプログラムを用意する必要がありました。
IIS7 でも、サーバーサイドで動作するコードを記述する必要がありますが、必要となるコードの量は存外に少なく、簡単なページでファイルアップロードの機能を実装できます。
以下に手順を示します。
手順
ASP.NET が動作するように構成された Web サイト、あるいは仮想ディレクトリを用意します。
※前回までの記事で紹介したような Web フォーム認証が動作する環境であれば問題ありません。
同 Web サイトの物理フォルダにに upload という名前でフォルダを作成し、アカウント NETWORK SERVICE に対し、"変更" の権限を付与します。
Web サイトが使用しているアプリーションプールの実行アカウントを NETWORK SERVICE を変更します。
変更の仕方が不明な場合は、以下のドキュメントを参照してください。
『IIS 7.0: アプリケーション プールの ID を指定する』
https://technet.microsoft.com/ja-jp/library/cc771170(WS.10).aspx
以下の内容をテキストエディタに貼り付けて、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> |
ブラウザから配置した upload.aspx にアクセスします。
以下のような、ファイルアップロード用の画面が表示されるので、[参照] ボタンをクリックしてファイルを選択後、[アップロード] ボタンをクリックして実際にファイルがアップロードがされるかご可能ください。
なお、アップロードされたファイルは、Web サイト内の upload フォルダに保存されます。
ファイルの保存場所を変更するには、ソースコード中の \\upload\\ を、任意のフォルダ名に変更してください。ちなみに、フォルダ名 "upload" の前後がフォントの関係でバックスラッシュ (\) で表示されていますが、正しくは "¥¥upload¥¥" です。
お手数ですが、コードを試すさいには修正してお使いくださいませ。
※タイトルに "IIS7" と書いてますが、このファイルアップーロード用のページについては IIS6.0 でも、ASP.NET が動作する環境であれば動作すると思います。
それと、ユーザーからアップロードされるファイルの種類、ファイルが使用するディスクサイズが気になる場合は、以前このブログで紹介したファイルスクリーンと、ディスククォータの機能を組み合わせると良いでしょう。
Please sign in to use this experience.
Sign in