2013-02-25 113 views
0

我在网页上创建了一个excel文件(使用EPPLUS),该文件提供了保存或打开文件的选项。asp.net检查是否保存/打开了Response.OutputStream中的文件

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
Response.AddHeader("content-disposition", "attachment; filename=Excel_List.xlsx"); 
package.SaveAs(Response.OutputStream); 
Response.End(); 

工作正常。我只想知道如何检查用户是否已打开/保存文件? 是否有这样的事件?

回答

2

最简单的答案是你不能。一旦服务器将文件交给客户端,ASP.NET无法控制它。

理论上,您可以在Excel文件中放置一个宏来调用服务器上的URL,但这是假设用户打开Excel文件并允许执行宏(在现代Excel版本中禁用该宏)。

+0

工作,我想这可能是这样的,只是不知道是否有一个变通,但猜测没有。需要研究一种替代解决方案。谢谢 – 2013-02-25 11:57:20

1

您无法确定。输出生成后,您无法了解下载过程或用户对下载文件所采取的操作。这主要是由于网络浏览器安全限制造成的。

0

不,这不是HTTP的用途。如果您可以成功发送来自服务器的所有数据,则可能会认为客户端已收到全部数据。然后,客户可以丢弃,保存,打印,复制,做任何他们喜欢的数据。

如果你想执行这样的检查,你应该从Excel文件本身执行。但是,再一次你不应该,因为隐私。如果我遇到过打电话给家里的Excel文件,我不知道会发生什么。

0

不可能知道他们是否实际在Excel中打开它而不向文件添加宏,但是有多种方式可以向服务器发送确认成功完成下载的确认。为此,您需要在浏览器中嵌入一个胖客户端来处理HTTP请求,而不是单独使用浏览器。类似SoftArtisans XFile可以用于此。我们的.NET Excel库还附带了一个可以管理下载过程的ActiveX控件(称为OfficeWriter Assistant)。

声明:我SoftArtisans