どっとねっとふぁん

C# Tips And Samples
in 検索

13.ファイルのアップロード

最新の投稿は、投稿日時: 06-23-2005, 4:50 午後 投稿者: ono です。スレッドには 0 件の返答があります。
投稿のソート: 前へ 次へ
  •  06-23-2005, 4:50 午後 59

    13.ファイルのアップロード

    サーバにファイルをアップロードするにはどうしたらいいでしょうか。
    ということで、以下はファイルをサーバ上のc:\testフォルダの下にアップロードするサンプルです。

    -------------------------------------------------------
    <%@ Page language="c#" %>
    <html>
    <head>
    <script runat=server>
    void button_Click(Object sender, EventArgs e) 
    {
        if (infile.PostedFile.FileName != "") 
        {
            try
    	{
                string fName = System.IO.Path.GetFileName(infile.PostedFile.FileName);
                infile.PostedFile.SaveAs("c:\\test\\" + fName);
                Message.Text=fName + "がアップロードされました";
    	}
    	catch(Exception exc)
    	{
                Message.Text=(exc.ToString()).Replace("\r\n", "<br />");
    	}
        }
    
    }
    </script>
    </head>
    <body>
    <form enctype="multipart/form-data" runat="server">
    <input id="infile" type="file" runat="server" /><br />
    <asp:Button id="Button" Text="実行" OnClick="button_Click" runat="server"/><br />
    <asp:label id="Message" runat="server"/><br />
    </form>
    </body>
    </html>
    
    -------------------------------------------------------
    Webコントロールにはファイルをアップロードできるコントロールはないため、HTMLコントロールを利用する必要があります。
    また、formのenctypeを"multipart/form-data"にしないと動作しないことに注意が必要です。

    SDKのドキュメントに記載されているサンプルだと、PostedFileがnullかどうかでファイルがアップロードされたかどうか判断できそうな記述になってますが、どうもうまく動作しなかったため、ここではFileNameが入っているかどうかで判断しています。

    このサンプルでエラーが発生する場合は、たいていフォルダの権限の問題だと思います。
    ファイルの保存を行うのはデフォルトではASPNETユーザだということに注意して、必要な権限を与えてください。


    追記:

    Ver1.1ではformのenctype属性を明示的に追加しなくても、FileInput HTMLコントロールを利用することで自動でenctype属性が追加されるように変更されているようです。
    ちょっと便利になりました。


    あおい情報システム株式会社
     小野修司(どっとねっとふぁん)
RSS ニュースフィードで参照
SkinName:iroha_CS2
Powered by Community Server, by Telligent Systems