次の方法で共有


HtmlInputFile クラス

サーバーの HTML <input type= file> 要素へのプログラムによるアクセスを許可します。

この型のすべてのメンバの一覧については、HtmlInputFile メンバ を参照してください。

System.Object
   System.Web.UI.Control
      System.Web.UI.HtmlControls.HtmlControl
         System.Web.UI.HtmlControls.HtmlInputControl
            System.Web.UI.HtmlControls.HtmlInputFile

Public Class HtmlInputFile
   Inherits HtmlInputControl
   Implements IPostBackDataHandler
[C#]
public class HtmlInputFile : HtmlInputControl, IPostBackDataHandler
[C++]
public __gc class HtmlInputFile : public HtmlInputControl,
   IPostBackDataHandler
[JScript]
public class HtmlInputFile extends HtmlInputControl implements
   IPostBackDataHandler

スレッドセーフ

この型の public static (Visual Basicでは Shared) のすべてのメンバは、マルチスレッド操作で安全に使用できます。インスタンスのメンバの場合は、スレッドセーフであるとは限りません。

解説

HtmlInputFile サーバー コントロールを使用して、ブラウザ クライアントからサーバーへのバイナリ ファイルまたはテキスト ファイルのアップロードを処理します。ファイルのアップロードは、Microsoft Internet Explorer Version 3.02 以降で機能します。

メモ   このコントロールは、 HtmlFormEnctype プロパティを "multipart/form-data" に設定しないと正しく動作しません。

ファイルをアップロードするように指定するには、コントロールのテキスト ボックスにファイルへの完全パス ("C:\MyFiles\Test.txt" など) を入力します。[参照] ボタンをクリックし、[ファイルの選択] ダイアログ ボックスでそのファイルを検索して選択することもできます。

HtmlInputFile コントロールには、サーバーへのポストバックの手段は組み込まれていません。サーバーにファイルをアップロードするには、 PostedFile プロパティに格納されている System.Web.HttpPostedFileSaveAs メソッドを使用します。この操作は、通常は、クリックなどのイベント処理メソッドで実行されます。

メモ    SaveAs メソッドを使用するときは、必ずファイルへの完全パス ("C:\MyFiles\Test.txt" など) を指定します。完全パスを指定しない場合、そのファイルは systemroot\system32\inetsrv ディレクトリに置かれます。既定では、このディレクトリは書き込み保護されているため、その場所にはファイルを保存できません。ファイルを格納するディレクトリに対する書き込みアクセス許可を、ASP.NET が使用するアカウントに付与します。

大きなファイルをアップロードしているときは、 <httpRuntime> 要素の maxRequestLength 属性を使用して最大許容ファイル サイズを大きくします。ファイルが指定サイズ超えると、ブラウザで DNS エラーが発生します。また、大きなファイルのアップロード中、次のエラー メッセージが表示されることもあります。

"メモリ使用が 460 MB (使用可能 RAM の 60 パーセント) を超えたため、aspnet_wp.exe (PID: 1520) が繰り返されました。"

このエラー メッセージが表示されたら、アプリケーションの Web.config ファイルの <processModel> 要素内にある memoryLimit 属性の値を大きくします。

HtmlInputFile のインスタンスの初期プロパティ値の一覧については、 HtmlInputFile コンストラクタのトピックを参照してください。

使用例

[Visual Basic, C#, JScript] HtmlInputFile コントロールを使用して、単純なファイル アップロードを処理する方法を次の例に示します。この例が正常に処理されるためには、C: ドライブに「TEMP」というディレクトリを作成する必要があります。

 
<%@ Page Language="VB" AutoEventWireup="True" %>

<html>
 <head>
 
    <script language="VB" runat="server">
       Sub Button1_Click(Source As Object, e As EventArgs)
            
            If Text1.Value = "" Then
                Span1.InnerHtml = "Error: you must enter a file name"
                Return
            End If
            
            If Not (File1.PostedFile Is Nothing) Then
                Try
                    File1.PostedFile.SaveAs(("c:\temp\" & Text1.Value))
                    Span1.InnerHtml = "File uploaded successfully to <b>c:\temp\" & _
                                      Text1.Value & "</b> on the Web server"
                Catch exc As Exception
                    Span1.InnerHtml = "Error saving file <b>c:\temp\" & _
                                      Text1.Value & "</b><br>" & exc.ToString()
                End Try
            End If
        End Sub 'Button1_Click 
    </script>
 
 </head>
 <body>
 
    <h3>HtmlInputFile Sample</h3>
 
    <form enctype="multipart/form-data" runat="server">
 
       Select File to Upload: 
       <input id="File1" 
              type="file" 
              runat="server">
 
       <p>
       Save as filename (no path): 
       <input id="Text1" 
              type="text" 
              runat="server">
 
       <p>
       <span id=Span1 
             style="font: 8pt verdana;" 
             runat="server" />
 
       <p>
       <input type=button 
              id="Button1" 
              value="Upload" 
              OnServerClick="Button1_Click" 
              runat="server">
 
    </form>
 
 </body>
 </html>
   

[C#] 
<%@ Page Language="C#" AutoEventWireup="True" %>

<html>
 <head>
 
    <script language="C#" runat="server">
 
       void Button1_Click(object Source, EventArgs e) 
       {
 
          if (Text1.Value == "") 
          {
             Span1.InnerHtml = "Error: you must enter a file name";
             return;
          }
 
          if (File1.PostedFile != null) 
          {
             try
             {
                File1.PostedFile.SaveAs("c:\\temp\\"+Text1.Value);
                Span1.InnerHtml = "File uploaded successfully to <b>c:\\temp\\" + 
                                  Text1.Value + "</b> on the Web server";
             }
             catch (Exception exc) 
             {
                Span1.InnerHtml = "Error saving file <b>c:\\temp\\" + 
                                  Text1.Value + "</b><br>" + exc.ToString();
             }
          }
       }
 
    </script>
 
 </head>
 <body>
 
    <h3>HtmlInputFile Sample</h3>
 
    <form enctype="multipart/form-data" runat="server">
 
       Select File to Upload: 
       <input id="File1" 
              type="file" 
              runat="server">
 
       <p>
       Save as filename (no path): 
       <input id="Text1" 
              type="text" 
              runat="server">
 
       <p>
       <span id=Span1 
             style="font: 8pt verdana;" 
             runat="server" />
 
       <p>
       <input type=button 
              id="Button1" 
              value="Upload" 
              OnServerClick="Button1_Click" 
              runat="server">
 
    </form>
 
 </body>
 </html>
   

[JScript] 
<%@ Page Language="JScript" AutoEventWireup="True" %>

<html>
 <head>
 
    <script language="JSCRIPT" runat="server">
       function Button1_Click(source : Object, e : EventArgs){
            
            if(Text1.Value == ""){
                Span1.InnerHtml = "Error: you must enter a file name"
                return
            }
            
            if(File1.PostedFile != null){
                try{
                    File1.PostedFile.SaveAs(("c:\\temp\\" + Text1.Value))
                    Span1.InnerHtml = "File uploaded successfully to <b>c:\\temp\\"
                                    + Text1.Value + "</b> on the Web server"
                }catch(exc : Exception){
                    Span1.InnerHtml = "Error saving file <b>c:\\temp\\"
                                    + Text1.Value + "</b><br>" + exc.ToString()
                }
            }
        }
    </script>
 
 </head>
 <body>
 
    <h3>HtmlInputFile Sample</h3>
 
    <form enctype="multipart/form-data" runat="server">
 
       Select File to Upload: 
       <input id="File1" 
              type="file" 
              runat="server">
 
       <p>
       Save as filename (no path): 
       <input id="Text1" 
              type="text" 
              runat="server">
 
       <p>
       <span id=Span1 
             style="font: 8pt verdana;" 
             runat="server" />
 
       <p>
       <input type=button 
              id="Button1" 
              value="Upload" 
              OnServerClick="Button1_Click" 
              runat="server">
 
    </form>
 
 </body>
 </html>
   

[C++] C++ のサンプルはありません。Visual Basic、C#、および JScript のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Web.UI.HtmlControls

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

アセンブリ: System.Web (System.Web.dll 内)

参照

HtmlInputFile メンバ | System.Web.UI.HtmlControls 名前空間 | HttpPostedFile | PostedFile | HtmlInputControl | Enctype | <httpRuntime> 要素 | <processModel> 要素