asp.net检查一个来自Response.OutputStream的文件是否被保存/打开
我正在build立一个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();
这工作正常。 我只是想知道如何检查用户是否打开/保存文件? 有没有事件?
最简单的答案是你不能。 一旦服务器把文件交给客户端,ASP.NET就无法控制它。
理论上,您可以在Excel文件中放置一个macros来调用服务器上的URL,但这是假定用户打开Excel文件并允许执行macros(在现代Excel版本中禁用该macros)。
你无法确定它。 生成输出后,您无法了解下载过程或用户对下载文件采取的操作。 这主要是由于浏览器安全限制造成的。
不,这不是HTTP的用途。 如果您可以成功发送来自服务器的所有数据,您可能会认为客户端已收到全部数据。 然后,客户可以丢弃,保存,打印,复制,做任何他们喜欢的数据。
如果你想执行这样的检查,你应该从Excel文件本身。 但是,那么你不应该,因为隐私。 如果我曾经遇到过打电话给家里的Excel文件,我不知道会发生什么。
我们无法知道他们是否真的在Excel中打开它,而不是将macros添加到文件中,但是有多种方法可以向服务器发送确认成功完成下载的确认。 为此,您需要在浏览器中embedded一个胖客户端来处理HTTP请求,而不是单独使用浏览器。 像SoftArtisans XFile可以用于这个。 我们的.NET Excel库也带有一个可以pipe理下载过程的ActiveX控件(称为OfficeWriter Assistant )。
免责声明:我为SoftArtisans工作
- HTML到Excel更改代码
- 如何在excelLibrary中格式化单元格
- 从HRESULT:0x800A03EC获取exception,同时在Excel工作簿中添加新工作表
- 在ASP.Net中用于不同版本的Excel的连接string
- 如何格式化gridview列?
- 导出到Excel中,带有重音的名称不会导出正确
- ASP.NET OData v3 vs Excel 2013:忽略分页?
- 通过在asp.net中的file upload,将Excel工作表导入SQL Server
- 是否有一个Excel图表对象到System.Windows.Forms.DataVisualization.Charting转换器?