我必须在我的网站上实现GEDCOM导出。
当单击“导出到gedcom”时,我的.net代码在服务器上创建了一个文件。
然后我需要将它从服务器下载到客户端,并且用户应该被问到保存该文件的位置,这意味着需要保存对话框。
下载后,我想从服务器上删除该文件。
我得到了一个代码来将文件从服务器传输到客户端:
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(Server.MapPath("~/" + FileName));
Response.End();从这个LINK
但是我不能删除这段代码之后的文件,因为Response.End结束了响应,所以在该行之后编写的任何代码都不会执行。
如果我在Response.End();之前编写删除文件的代码,那么文件不会传输,并且我会得到一个错误。
发布于 2010-04-22 13:11:37
放在Response.End之后的任何东西都不会被执行,因为它会抛出一个ThreadAbortException来停止页面的执行。
试着这样做:
string responseFile = Server.MapPath("~/" + FileName);
try{
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(responseFile);
Response.Flush();
}
finally {
File.Delete(responseFile);
}发布于 2010-04-22 13:10:07
如果文件相当小,您可以将其加载到字节数组中,以便在仍能发送数据的情况下删除文件:
Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
string path = Server.MapPath("~/" + FileName);
byte[] data = File.ReadAllBytes(path);
File.Delete(path);
Response.BinaryWrite(data);
Response.End();https://stackoverflow.com/questions/2688282
复制相似问题