如何使用 Response 类创建要下载的文件,然后与客户端交互

How to create file for download using Response class and then interact with the client?

本文关键字:文件 然后 交互 客户端 下载 Response 何使用 创建      更新时间:2024-03-14

我有一个按钮,它的OnClientClick事件调用Generate((。

function Generate() {
    window.open('GenerateKey.aspx', '_newtab', 'titlebar = no', false);
    PageMethods.SendKey(SendKeyCallback, SendKeyCallbackError);
}

回调函数隐藏加载 gif 并提醒状态(成功/失败(

生成密钥.aspx创建一个文件并打开下载弹出窗口。

这是page_load代码:

    string keyFileName = orgName + "-" + timeStamp + ".ckey";
    fs = new FileStream(Server.MapPath("~/License/Generate/" + keyFileName), FileMode.Create, FileAccess.ReadWrite);
    sw = new StreamWriter(fs);
    sw.Write(generatedKey);
    sw.Flush();
    fs.Close();
    Response.ContentType = "text/xml";
    Response.AppendHeader("Content-Disposition", "attachment; filename=" + keyFileName);
    Response.TransmitFile(Server.MapPath("~/License/Generate/" + keyFileName));
    Response.End();

代码工作正常,但我的问题是下载弹出屏幕后新选项卡被关闭(我想这是因为响应对象而发生的(,它看起来像一个错误。

我弹出一个新的空白选项卡 1 秒钟,然后它关闭了。

有人知道如何让它看起来更好吗?我不能在同一页面上执行此操作,因为在文件生成后,我不再与客户端连接(这就是我使用 window.open 的原因(。

您要求浏览器在另一个窗口中打开文本文件。 浏览器可能会将数据解释为不是HTML,将文件存储到磁盘,然后关闭窗口 - 这对于浏览器来说是相当标准的。 如果不需要,则需要将HTML数据发送到浏览器或将浏览器配置为不自动将该类型的数据保存到磁盘。