gpt4 book ai didi

c# - 强制下载 ASP.Net

转载 作者:太空狗 更新时间:2023-10-29 23:33:35 25 4
gpt4 key购买 nike

在 ASP.Net(使用 C#)中,我试图创建一个包含纯文本的 .DAT 文件,并将其发送到浏览器并强制下载。我已经尝试了几件事,但无法正常工作。在我的 aspx 文件中有一个 ImageButton

<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。

我也尝试过使用内容类型“application/octet-stream”或 PDF 文件和内容类型“application/pdf”,但没有任何效果。页面加载正常,没有文件正在下载。

最佳答案

文件字符串的路径是否真的正确?

this.Response.AddHeader("content-disposition", "attachment;filename=" + file);

不应该是文件名吗?

为什么要在将文件写入响应之前将其删除?通过响应提供文件然后删除它不是更有意义吗?

即打电话

File.Delete(Server.MapPath(fileName));

回复后。

你应该尝试:

Response.TransmitFile( Server.MapPath(fileName) );
Response.End();

TransmitFile 非常高效,因为它基本上将文件流卸载到 IIS,包括可能导致文件缓存在内核缓存中(基于 IIS 的缓存规则)。 Response.End();

关于c# - 强制下载 ASP.Net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9277722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com