在ASP.Net(与C#)我试图创建一个纯文本的.DAT文件,并将其发送到浏览器并强制下载。我尝试了几件事,但我无法得到它的工作。在我的aspx文件有一个ImageButton
强制下载ASP.Net
<asp:ImageButton ID="btnSave" runat="server" CausesValidation="False" ImageUrl="~/Images/Stages/Database/Save.png" OnClick="btnSave_OnClick" Width="26px" />
在onclick法我试图创建文件,并将其发送给浏览器。
protected void btnSave_OnClick(object sender, EventArgs e)
{
string file = "test.dat";
string fileName = "~\\Stages\\Broekx\\Databanken\\" + file;
FileStream fs = new FileStream(MapPath(fileName), FileMode.Open);
long cntBytes = new FileInfo(MapPath(fileName)).Length;
byte[] byteArray = new byte[Convert.ToInt32(cntBytes)];
fs.Read(byteArray, 0, Convert.ToInt32(cntBytes));
fs.Close();
ImageButton btnSave = (ImageButton)FormViewStagesDummy.FindControl("btnSave");
btnSave.Visible = false;
File.Delete(Server.MapPath(fileName));
if (byteArray != null)
{
this.Response.Clear();
this.Response.ContentType = "text/plain";
this.Response.AddHeader("content-disposition", "attachment;filename=" + file);
this.Response.BinaryWrite(byteArray);
this.Response.End();
this.Response.Flush();
this.Response.Close();
}
}
文件test.dat存在于正确的文件夹中,并且在读入字节后必须删除。我已经试过这个而不删除文件,也不会工作。
点击btnSave后,按钮必须隐藏,所以我将参数Visible设置为false。
我也试过它与内容类型的“应用程序/八位字节流”或与PDF文件和内容类型“应用程序/ pdf”,但没有任何作品。页面正常加载并且没有文件正在被下载。
我怀疑响应的某些部分会在头部之前发送。我也不明白你期望单个响应如何下载文件,并同时使按钮不可见。 – CodesInChaos 2012-02-14 13:47:26
我以为类似的东西,但我怎么做这项工作? – Yoni 2012-02-14 13:49:49
作为旁注:查看'File.ReadAllBytes',它可以替换您用来读取文件的5行。你应该只用非常小的文件来做到这一点,或许高达10kB。 – CodesInChaos 2012-02-14 13:50:40