1

所以这是我的问题:我有一个使用对 ExportFile 的响应的代码,但问题出在响应代码之后。随后的代码不再执行,或者它就像被读取但被忽略了。对不起,我是菜鸟。所以这是我的代码:

fullFilePath = "" + rootPath + "" + Filename + ".xlsx";
string fileName = fullFilePath.Substring(fullFilePath.LastIndexOf('\\') + 1);
byte[] buffer;

using (FileStream fileStream = new FileStream(fullFilePath, FileMode.Open))
{
    int fileSize = (int)fileStream.Length;

    buffer = new byte[fileSize];

    // Read file into buffer
    fileStream.Read(buffer, 0, (int)fileSize);
}

Response.Clear();

Response.Buffer = true;
Response.BufferOutput = true;
Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.CacheControl = "public";
// writes buffer to OutputStream
Response.OutputStream.Write(buffer, 0, buffer.Length);
newFile.Delete();


ClientScript.RegisterStartupScript(GetType(), "id", "EnableCtrl()", true);

执行此操作后,不会触发或触发 javascript“EnableCtrl()”。当我删除与响应相关的代码部分并将其更改为其他内容时,将触发 javascript。那么我怎么能在响应代码之后运行 javascript 呢?

4

1 回答 1

1

脚本不会/不能触发此方法,因为浏览器已经收到响应:这是文件,而不是回发的标记。一请求。一回应。这不是回发标记。

相反,我会建议:

  1. 也在浏览器中处理启动控件的“客户端单击”(该操作可能会延迟setTimeout)。由于响应中的附件配置,浏览器实际上不会刷新页面/DOM,这就是它起作用的原因。但是,如果下载被接受、开始或完成,则没有客户端事件1

  2. 更改设计,使“下载”是一个没有其他副作用的单独操作。

快乐编码。


1可以设计允许客户端查询下载进度的服务器辅助设置,就像上传进度指示器一样。然而,这不是微不足道的或标准的,可能仍然不能准确地反映状态。

于 2012-05-31T16:16:30.530 回答