FileUploadコントロールを書き換えて、アップロードしたファイル名を表示させます.
4944 ワード
私は以前の開発でよくこのようなシーンに遭遇しました:ファイルがアップロードされた後にファイル名を表示する必要がありますが、asp.Netが持参したfile uploadは、アップロード後のファイル名値には付与できません.
以前はlabel表示をしていましたが、今日思い出しました.コントロールを書いてパッケージして、直接コードをつけます.
コントロールのコード:
テストコード:
以前はlabel表示をしていましたが、今日思い出しました.コントロールを書いてパッケージして、直接コードをつけます.
コントロールのコード:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Fang
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:FangFileUpload runat=server></{0}:FangFileUpload>")]
public class FangFileUpload : FileUpload
{
/// <summary>
/// ,
/// </summary>
[
Browsable(false),
Description(" ")
]
public bool IsUploaded
{
get { return ViewState["IsUploaded"] == null ? false : (bool)ViewState["IsUploaded"]; }
set { ViewState["IsUploaded"] = value; }
}
/// <summary>
///
/// </summary>
public string UploadedFileName
{
get { return ViewState["UploadedFileName"] == null ? null : ViewState["UploadedFileName"].ToString(); }
set { ViewState["UploadedFileName"] = value; }
}
/// <summary>
/// file ,
/// </summary>
/// <param name="writer"></param>
protected override void AddAttributesToRender(HtmlTextWriter writer)
{
// id name
if (!this.IsUploaded)
{
string uniqueID = this.UniqueID;
if (uniqueID != null)
{
writer.AddAttribute(HtmlTextWriterAttribute.Name, uniqueID);
}
string clientID = this.ClientID;
if (clientID != null)
{
writer.AddAttribute(HtmlTextWriterAttribute.Id, clientID);
}
}
}
/// <summary>
/// div, file
/// </summary>
protected override HtmlTextWriterTag TagKey
{
get
{
if (IsUploaded)
{
return HtmlTextWriterTag.P;
}
else
{
return HtmlTextWriterTag.Input;
}
}
}
/// <summary>
/// div file
/// </summary>
/// <param name="writer"></param>
protected override void Render(HtmlTextWriter writer)
{
if (!IsUploaded)
{
writer.AddAttribute(HtmlTextWriterAttribute.Type, "file");
base.Render(writer);
}
else
{
base.RenderBeginTag(writer);
writer.Write(string.IsNullOrEmpty(UploadedFileName) ? " " : UploadedFileName);
base.RenderEndTag(writer);
}
}
}
}
テストコード:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ Register Assembly="FangFileUpload" Namespace="Fang" TagPrefix="Fang" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<Fang:FangFileUpload ID="FangFileUpload1" runat="server" />
<br />
<asp:Button ID="btn" runat="server" OnClick="btn_Click" Text="upload"/>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btn_Click(object sender, EventArgs e)
{
if (FangFileUpload1.HasFile)
{
FangFileUpload1.SaveAs(Server.MapPath("~/upload/") + FangFileUpload1.FileName);
//
FangFileUpload1.IsUploaded = true;
FangFileUpload1.UploadedFileName = FangFileUpload1.FileName;
}
}
}