Asp.net-file-uploading
ASP.NET-ファイルのアップロード
ASP.NETには、ユーザーがWebサーバーにファイルをアップロードできる2つのコントロールがあります。 サーバーがポストされたファイルデータを受信すると、アプリケーションはそれを保存、チェック、または無視できます。 次のコントロールは、ファイルのアップロードを許可します。
- HtmlInputFile -HTMLサーバーコントロール
- FileUpload -およびASP.NET Webコントロール
両方のコントロールはファイルのアップロードを許可しますが、FileUploadコントロールはフォームのエンコーディングを自動的に設定しますが、HtmlInputFileはそうしません。
このチュートリアルでは、FileUploadコントロールを使用します。 FileUploadコントロールを使用すると、ユーザーはアップロードするファイルを参照して選択し、ファイル名を入力するための参照ボタンとテキストボックスを提供できます。
ユーザーがテキストボックスに名前を入力するか参照してファイル名を入力すると、FileUploadコントロールのSaveAsメソッドを呼び出してファイルをディスクに保存できます。
FileUploadの基本的な構文は次のとおりです。
<asp:FileUpload ID= "Uploader" runat = "server"/>
FileUploadクラスはWebControlクラスから派生し、そのすべてのメンバーを継承します。 これらとは別に、FileUploadクラスには次の読み取り専用プロパティがあります。
Properties | Description |
---|---|
FileBytes | Returns an array of the bytes in a file to be uploaded. |
FileContent | Returns the stream object pointing to the file to be uploaded. |
FileName | Returns the name of the file to be uploaded. |
HasFile | Specifies whether the control has a file to upload. |
PostedFile | Returns a reference to the uploaded file. |
投稿されたファイルは、HttpUpedFile型のオブジェクトにカプセル化され、FileUploadクラスのPostedFileプロパティを介してアクセスできます。
HttpPostedFileクラスには、次の頻繁に使用されるプロパティがあります。
Properties | Description |
---|---|
ContentLength | Returns the size of the uploaded file in bytes. |
ContentType | Returns the MIME type of the uploaded file. |
FileName | Returns the full filename. |
InputStream | Returns a stream object pointing to the uploaded file. |
例
次の例は、FileUploadコントロールとそのプロパティを示しています。 フォームには、FileUploadコントロールと、保存ボタン、およびファイル名、ファイルタイプ、ファイル長を表示するラベルコントロールがあります。
デザインビューでは、フォームは次のようになります。
コンテンツファイルのコードは次のとおりです。
<body>
<form id="form1" runat="server">
<div>
<h3> File Upload:</h3>
<br/>
<asp:FileUpload ID="FileUpload1" runat="server"/>
<br/><br/>
<asp:Button ID="btnsave" runat="server" onclick="btnsave_Click" Text="Save" style="width:85px"/>
<br/><br/>
<asp:Label ID="lblmessage" runat="server"/>
</div>
</form>
</body>
保存ボタンの背後にあるコードは次のとおりです。
protected void btnsave_Click(object sender, EventArgs e)
{
StringBuilder sb = new StringBuilder();
if (FileUpload1.HasFile)
{
try
{
sb.AppendFormat(" Uploading file: {0}", FileUpload1.FileName);
//saving the file
FileUpload1.SaveAs("<c:\\SaveDirectory>" + FileUpload1.FileName);
//Showing the file information
sb.AppendFormat("<br/> Save As: {0}", FileUpload1.PostedFile.FileName);
sb.AppendFormat("<br/> File type: {0}", FileUpload1.PostedFile.ContentType);
sb.AppendFormat("<br/> File length: {0}", FileUpload1.PostedFile.ContentLength);
sb.AppendFormat("<br/> File name: {0}", FileUpload1.PostedFile.FileName);
}catch (Exception ex)
{
sb.Append("<br/> Error <br/>");
sb.AppendFormat("Unable to save file <br/> {0}", ex.Message);
}
}
else
{
lblmessage.Text = sb.ToString();
}
}
次の点に注意してください。
- StringBuilderクラスはSystem.IO名前空間から派生しているため、含める必要があります。
- tryブロックとcatchブロックはエラーをキャッチするために使用され、エラーメッセージを表示します。