Я разрабатываю систему комментирования с asp.net. Пользователь может прикрепить изображение с помощью кнопки «Прикрепить» и опубликовать комментарий с помощью кнопки «Опубликовать». Загрузка изображения начинается, когда пользователь присоединяет его. Обработчик ASHX сохраняет загруженный файл в папку «temp». Если пользователь нажимает кнопку «Опубликовать», я перемещаю изображение в безопасное место. Если он не нажимает «Опубликовать», закрывает браузер и уходит, файл остается в папке «temp». Как я могу удалить файл из этой «временной» папки через час после загрузки?
подробности:
Я подумал, используя System.Timers.Timer в файле Ashx, используемом для загрузки
System.Timers.Timer timer = new System.Timers.Timer(300);
string fileName;
public void Cleaner()
{
System.Timers.Timer timer = new System.Timers.Timer(300); //3 second
timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
timer.Start();
}
protected void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs a)
{
timer.Stop();
timer.Close();
string path = "temp";
string mapPath = HttpContext.Current.Server.MapPath("../" + path);
FileInfo TheFile = new FileInfo(mapPath + "\\" + fileName);
if (TheFile.Exists) File.Delete(mapPath + "\\" + fileName);
}
public void ProcessRequest(HttpContext context)
{
//Saving uploaded file
Cleaner();
}
но я чувствую, что делаю неправильно.
Таймер срабатывает через 3 секунды, но HttpContext.Current в функции timer_Elapsed () возвращает ноль. Кроме того, имя файла также возвращает ноль после таймера. Я не смог найти способ передать имя файла в качестве параметра при привязке события. Просто это проблематично. Я ищу более элегантный способ удаления загруженного файла через час.