TanzeelurRehman Ответов: 2

FileInfo не удаляет файл


Привет всем

Ниже приведен мой код для удаления файла с сервера. На месте я его проверил. Это прекрасно работает для меня.

var fi = new FileInfo(Server.MapPath(thmbImagePath));
                  if (fi.Exists)
                  {
                     fi.Delete();
                  }


Когда я попробовал это онлайн (интернет). Он генерирует исключение, которое не может быть удалено файлом при ошибке использования.

Поэтому нужна помощь. Каков наилучший способ удаления онлайн-файлов?

С уважением
TanzeelurRehman

walterhevedeich

Я думаю, что это может быть исключение из правил безопасности. Можете ли вы опубликовать точное сообщение об ошибке?

TanzeelurRehman

Извините сейчас, позже я могу опубликовать ошибку. Сейчас сервер не работает, мы над ним работаем.
Как я знаю, изображения используются, поэтому он дает ошибку. фотографии загружаются на месте. Удаление создает проблемы. похоже, что создаются временные файлы для изображений, которые не позволяют удалять изображения. Как удалить временные изображения в первую очередь и где они находятся. Просто направьте меня в этом сценарии

OriginalGriff

Вероятно, это связано с тем, как вы обрабатываете изображения - посмотрите на код и убедитесь, что вы закрываете и удаляете все объекты, связанные с файлами, - если вы этого не сделаете, то файл может использоваться до тех пор, пока GC не войдет и не очистит их. Что может произойти на следующей неделе...

2 Ответов

Рейтинг:
1

Sushil Mate

Утилизируйте этот файловый объект везде, где вы получаете доступ к этому файлу, другой проблемой могут быть права пользователя на эту папку.


TanzeelurRehman

Спасибо за ваш ответ.
Я понял, что мне нужно избавиться от файлов изображений, которые я использую. У меня есть галерея изображений. Где я использую ссылки на изображения файлов. Ничего больше. как мне расположить изображения там, где я их использовал в ссылках

Sushil Mate

не могли бы вы опубликовать фрагмент кода галереи изображений?

TanzeelurRehman

охраняемых недействительными grdAllCars_RowDeleting(объект отправителя, GridViewDeleteEventArgs е)
{
var dataKey = grdAllCars.DataKeys[e.Параметр rowindex];
var companyId = коммунальные услуги.GetCompanyId();
if (dataKey != null && companyId != null)
{
десятичный cId = преобразовать.ToDecimal(companyId);
десятичный CarId = конвертировать.ToDecimal(dataKey.Ценность.Метод toString());
var objContext = новые CarShowRoomEntities();
ВАР showRoomData = objContext.tbl_Cars.Метода singleordefault(автомобиль =&ГТ; (авто.CarId == CarId &&усилителя; автомобиль.CompanyId == cId));
var allImages = objContext.tbl_Car_Image.Где(изображение => изображение.Карид == Карид).Список();
var largeImagePaths = новый список<string>();
var thmbImagePaths = новый список<string>();
foreach (var img Во всех изображениях)
{
большие имагепаты.Добавить(img.CarImagePath);
thmbImagePaths.Добавить(img.CarThmb_ImagePath);
objContext.DeleteObject(img);
}
objContext.DeleteObject(showRoomData);
objContext.Метод SaveChanges();
пробовать
{
по каждому элементу (ВАР thmbImagePath в thmbImagePaths)
{
var fi = new FileInfo(сервер.MapPath(thmbImagePath));
если (fi.существует)
{
интернет.Удалить();
}
}
по каждому элементу (ВАР largeImagePath в largeImagePaths)
{
var fi = new FileInfo(сервер.MapPath(largeImagePath));
если (fi.существует)
{
интернет.Удалить();

}
}
}
ловить
{

}

if (ViewState["SearchQuery"] != null)
PopulateGridViewBasedOnQuery(ViewState["SearchQuery"].Метод toString());
еще
PopulateGridViewBasedOnQuery();
}
}

Sushil Mate

смотрите, не используйте var, это довольно запутанно, чтобы понять ваш код, используйте правильные объекты и назначайте их, после использования утилизируйте их. перед удалением файла удалите все объекты, связанные с галереей изображений. вы помещаете ссылку или изображение в галерею, вы должны очистить эту вещь reference & image перед удалением файла. есть некоторые объекты, которые не освобождаются.. вот почему вы не можете удалить его.

Рейтинг:
0

Anuja Pawar Indore

Я попробовал тот же код, но он работает нормально. Пожалуйста, смотрите раздел Разрешение папки.

DirectoryInfo dr = new DirectoryInfo(Server.MapPath("TempPDF"));
        try
        {
            FileInfo[] files = dr.GetFiles();
            for (int i = 0; i < files.Length; i++)
                files[i].Delete();
        }
        catch (Exception ex) { //catch your exception here
}