У меня есть простая форма, которую пользователи могут использовать для загрузки изображений.Он имеет кнопку предварительного просмотра, поэтому, когда пользователь выбирает изображение и нажимает на предварительный просмотр, происходит обратная передача, и я сохраняю изображение во временную папку, изменяю его размер и показываю на странице.оттуда пользователь может либо submit form
, либо edit
форму.Если он отправляет, все в порядке, я копирую изображение с измененным размером в правильную папку.
Если он нажимает кнопку «Изменить» и выбирает другое изображение, мне нужно удалить загруженные файлы (как оригинальные, так и измененные) и «Если я сделаю»это:
File.Delete(HostingEnvironment.MapPath(TmpDirectory + PostImageName + ".jpg"));
File.Delete(HostingEnvironment.MapPath(TmpDirectory + PostImageName + "_small_.jpg"));
Я получаю исключение, сообщающее, что какой-то другой процесс использует изображение и не может удалить его.(даже после обратной передачи!)
и Кроме того, если вместо удаления этого файла я пытаюсь сохранить новое изображение с тем же именем, чтобы оно перезаписывалось, оно по-прежнему выдает ошибку, поскольку файл уже существует.
Нет ограничений на количество раз, которое пользователь может редактировать / просматривать, поэтому я не могу сохранять файлы постепенно (это даже не имеет смысла)
Кроме того, после обратной передачи, когда пользователь возвращается в режим редактирования и просматривает форму, элемент управления загрузкой файлов пуст.Как я могу получить контроль загрузки файлов, чтобы сохранить значение?все остальные текстовые поля, текстовые области и флажки ведут себя правильно.
Подводя итог, вот мои вопросы:
1) как на земле (или, скорее, в C #) я могу удалить файлы, не получая этоисключение?
ИЛИ
1) как перезаписать файлы?
2) как заставить элемент управления загрузкой файла сохранять свое значение между постбэками.
Спасибо.