2013-11-27 3 views
2

Я не могу удалить изображение после загрузки в C# mvc.it показывает исключение в File.delete (путь)Процесс не может получить доступ к файлу «D: ebook ff.jpg», потому что он используется другим процессом

Исключение: процесс не может получить доступ к файлу 'D: \ книгу \ alignment11429852064.png', так как он используется другим процессом

процесс FileUpload:

 public void UploadImage(HttpPostedFileBase file, FileImage upload) 
    { 
     try 
     { 
      string fileName = Path.GetFileNameWithoutExtension(file.FileName); 
      string fileExtension = Path.GetExtension(file.FileName); 
      string hashFile = fileName + DateTime.Now.GetHashCode(); 
      string path = Path.Combine(HttpContext.Current.Server.MapPath("D\ebook" + hashFile + fileExtension)); 
      upload.ImageFile = "D\ebook" + hashFile + fileExtension; 
      file.SaveAs(path); 
     } 
     catch(exception e) 
     { 
     } 
    } 

FileImage модель

здесь я написал для удаления функции (изображения)

public ProfileImage DiscardImage(FileImage image) 
{ 
    try 
    { 
     if(File.Exists(HttpContext.Current.Server.MapPath(image.ImageFile))) 
     { 
      File.Delete(HttpContext.Current.Server.MapPath(image.ImageFile)); 
     } 
    } 
    catch(exception e) 
    { 
    }  
} 
+0

Вы уверены, что изображение не открыто в редакторе изображений? –

+2

«потому что он используется другим процессом», часто является ложью. Это почти всегда внутри вашего собственного кода и что у вас есть другой объект, скрывающийся вокруг ожидающего быть GCed, который имеет дескриптор, открытый для файла, и что вы должны были бы теперь называть Dispose. –

+0

О том, как мне пришлось обойти эту проблему ... удаление и переименование файлов в веб-приложении - такая боль; любой может содержать ссылку на этот файл - другой запрос (например, предварительный просмотр изображения или сто пользователей вашей сети), IIS (он обрабатывает кеширование и может удерживать его по желанию) и многое другое. И в довершение всего, некоторые изменения в файлах и каталогах могут * перезапустить все ваше приложение *. – Luaan

ответ

0

Файла «D: \ книги \ alignment11429852064.png» изображение открыто в другой вкладке или в другом окне. Закройте его, а затем повторите попытку.

+0

Спасибо за предложение. Я пробовал. Но для моего кода это не работает. Пожалуйста, предложите мне альтернативное решение для этого – user3040626

+0

Попробуйте перезагрузить компьютер, а затем дайте мне знать. – Monika

+0

Я тоже пробовал этот способ. – user3040626

0

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

+0

Я правильно их разместил. Но опять же у меня была такая же ошибка – user3040626

+0

Есть ли ошибка в моем коде? – user3040626

+0

Ваш код хорошо видно. Я столкнулся с проблемой в разной ситуации. Поэтому я просто стараюсь избегать копирования, сохранения и т. Д. И удалять одновременно с открытием моего приложения. Вы знаете, я имею в виду, потому что в это время мое собственное приложение использует эти файлы, которые я не могу удалить или удалить. Итак, что я могу сделать, это попытаться удалить или удалить в следующий раз, когда я открою приложение. Это все моя идея. Надежда может вам помочь! удачи. – HICURIN

Смежные вопросы

 Смежные вопросы