【发布时间】:2015-03-28 19:59:51
【问题描述】:
我创建了一个用于下载文档的 asp.net 站点。我用 Page.Response 处理这个。
try {
...
EndpointAddress endPoint = new EndpointAddress("xxxxx.svc");
FileServiceClient fileServiceProxy = new FileServiceClient(binding, endPoint);
// WCF WebService call
Stream stream = fileServiceProxy.GetFileStream(filePath);
Page.Response.ContentType = "application/pdf";
Page.Response.AddHeader("Content-Disposition",string.Format ("attachment; fileName=\"{0}\"", Path.GetFileName(filePath)));
Page.Response.AddHeader("Accept-Ranges", "bytes");
if (buffer != null){
Page.Response.BinaryWrite(buffer);
}
Page.Response.Flush();
}
catch (Exception e)
{
Page.Response.Clear();
Page.Response.ClearContent();
Page.Response.ClearHeaders();
}
finally
{
Page.Response.End();
}
当文件从网络服务加载时,我想显示一个沙漏光标。显示加载光标正在工作。
protected void Page_Load(object sender, EventArgs e)
{
btnDownload.Attributes.Add("onclick", "document.body.style.cursor = 'wait';");
}
但我无法将其改回正常光标。我想是因为我不回发帖子或不重新加载网站。 如果 buttonClick 事件结束而没有重新加载站点,我该怎么做才能设置默认光标!?
更新:使用 wcf webservice 调用更新了代码。我用文件路径调用 web 服务并返回一个流,我将其写入 Page.Response.BinaryWriter
【问题讨论】:
-
这比看起来要复杂得多。有关血腥细节,请参阅Can you use Javascript to detect a file download window created server side?。
-
the file is loading from a webservice是什么意思?你怎么打电话?使用 jQuery 的 ajax?或者它是一个脚本服务?无论哪种方式,您都应该有一个oncomplete事件...