asp.net检查是否已保存/打开Response.OutputStream中的文件

时间:2013-02-25 11:27:33

标签: c# asp.net excel epplus

我正在网页上构建一个excel文件(使用EPPLUS),该文件提供保存或打开文件的选项。

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

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

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

你无法确定它。生成输出后,您没有关于下载过程或用户对下载文件执行的操作的信息。它主要是由Web浏览器安全限制造成的。

答案 2 :(得分:0)

不,这不是HTTP的用途。如果您可以成功从服务器发送所有数据,您可以假设客户端已收到所有数据。然后,客户可以丢弃,保存,打印,复制,对数据做任何他们喜欢的事情。

如果要执行此类检查,则应从Excel文件本身执行此操作。但是,由于隐私,你不应该再这样做。如果我曾在家里打电话给Excel文件,我不知道会发生什么。

答案 3 :(得分:0)

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

免责声明:我为SoftArtisans工作