我正在网页上构建一个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();
工作正常。我只是想知道如何检查用户是否已打开/保存文件? 是否有事件发生?
答案 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工作