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 以降で機能します。
メモ このコントロールは、 HtmlForm の Enctype プロパティを "multipart/form-data" に設定しないと正しく動作しません。
ファイルをアップロードするように指定するには、コントロールのテキスト ボックスにファイルへの完全パス ("C:\MyFiles\Test.txt" など) を入力します。[参照] ボタンをクリックし、[ファイルの選択] ダイアログ ボックスでそのファイルを検索して選択することもできます。
HtmlInputFile コントロールには、サーバーへのポストバックの手段は組み込まれていません。サーバーにファイルをアップロードするには、 PostedFile プロパティに格納されている System.Web.HttpPostedFile の SaveAs メソッドを使用します。この操作は、通常は、クリックなどのイベント処理メソッドで実行されます。
メモ 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> 要素