asp.net 问题,一个button实现文件的下载。(附加要求见问题补充)

2025-03-03 21:40:34
推荐回答(2个)
回答1:

protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
GetButton();
}
}

//将下载按钮的button的id传给SetBtn方法设置下载事件
private void GetButton()
{
SetBtn(Button1.ID);
SetBtn(Button2.ID);
SetBtn(Button3.ID);
SetBtn(Button4.ID);
}
private void SetBtn(string btnID)
{

if (btnID != "")
{
try
{
Button btn = (Button)FindControl(btnID);
btn.Click += new System.EventHandler(this.btn_Click);
}
catch (Exception)
{
//不是button
}
}
}

protected void btn_Click(object sender, EventArgs e)
{
//判断下载的文件是否存在
if (System.IO.File.Exists(Server.MapPath("123.txt")))
{
string filePath = Server.MapPath("123.txt");
FileInfo DownloadFile = new FileInfo(filePath);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
}
}

回答2:

//下载功能
public void DownLoad(string pathName)
{
string FilePath = Server.MapPath(pathName);
if (System.IO.File.Exists(FilePath))
{
FileInfo file = new FileInfo(FilePath);
Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name)); //解决中文文件名乱码
Response.AddHeader("Content-length", file.Length.ToString());
Response.ContentType = "appliction/octet-stream";
Response.WriteFile(file.FullName);
Response.End();

}
}

protected void Button1_Click(object sender, EventArgs e)
{
DownLoad("~/文档/学习.txt");
}

看看 这 是不是你想要的功能