Вопрос

Я должен реализовать экспорт GedCom на моем сайте.

Мой код .NET создал один файл на сервере при нажатии экспорта в GedCom.

Тогда мне нужно скачать его на клиента с сервера, а также пользователь должен просить, где сохранить этот файл, требуется SAVEDialog.

После того, как он загружен, я хочу удалить этот файл с сервера.

У меня есть один код для передачи файла с сервера к клиенту:

Response.ContentType = "text/xml";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + FileName);
Response.TransmitFile(Server.MapPath("~/" + FileName));
Response.End();

из этого СВЯЗЬ

Но я не могу удалить файл после этого кода как Response.End Закончит ответ, чтобы какой код не написан после этой строки, не выполняется.

Если я сделаю код для удаления файла до 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);
}

Другие советы

Если файл достаточно маленький, вы можете загрузить его в байтовый массив, чтобы вы могли удалить файл, все еще в состоянии отправлять данные:

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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top