2015-01-28 2 views
2

Я показываю изображения каталога на сайте, и пользователь может загрузить и удалить содержимое этой папки. Однако по какой-то причине моя кнопка удаления ссылки не работает. Вот мой код для отображения изображений (Это не работает никаких проблем):Удалить файл из каталога asp.net C#

{ 
      string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Images/Products/")); 
      List<String> images = new List<string>(filesindirectory.Count()); 

      foreach (string item in filesindirectory) 
      { 
       images.Add(String.Format("~/Images/Products/{0}", System.IO.Path.GetFileName(item))); 
      } 
      ListView1.DataSource = images; 
      ListView1.DataBind(); 
     } 

Вот мой код для Delete Button Link (Это не работает):

protected void deleteLinkButton_Click(object sender, EventArgs e) 
    { 
     var deleteButton = sender as LinkButton; 
     string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Images/Products/{0}")); 
     try 
     { 
      FileInfo fi = new FileInfo(Server.MapPath("~/Images/Products/")); 
      fi.Delete(); 
      statusLabel2.Text = "Delete Image Successful!"; 
     } 
     catch 
     { 
      // Display error 
      statusLabel2.Text = "Delete Image Failed"; 
     } 
     ListView1.DataBind(); 
    } 

Когда я пытаюсь удалить файл я получаю эту ошибку: System.IO.DirectoryNotFoundException: не удалось найти часть пути

И мой стек трассировки отображения:

System.IO .__ Error.WinIOError (Int32 errorCode, String maybeFullPath) +359 System.IO.FileSystemEnumerableIterator 0.1..ctor (String path, String originalUserPath, String searchPattern, SearchOption searchOption, SearchResultHandler`1 resultHandler, Boolean checkHost) + 445 System.IO.Directory.GetFiles (String path) +70

ответ

2

Вы указываете неверный путь поиска "~/Images/Products/{0}", который дает вам ошибку - не уверен, что это должно быть.

Вы пытаетесь удалить каталог как файл - значит, следующая ошибка будет на этой линии:

FileInfo fi = new FileInfo(Server.MapPath("~/Images/Products/")); 
fi.Delete() 
+0

Хорошо, вам придется извинить, что я добрый нового для всего этого. Вы говорите, что эта строка говорит ему удалить мой каталог, а не файл в каталоге? Потому что я хочу удалить выбранный файл из каталога, а не из каталога. Как я могу найти выбранный файл? – Faron

+0

@Faron - просто 'Path.Combine' каталог для имени файла, который вы хотите удалить. (Как получить значение из представления/формы на сервер - это отдельный вопрос, заданный много раз раньше). –

1
FileInfo fi = new FileInfo(Server.MapPath("~/Images/Products/")); 

здесь вы пытаетесь запустить каталог как файл

string[] filesindirectory = Directory.GetFiles(Server.MapPath("~/Images/Products/{0}")); 

и здесь у вас есть недопустимый путь к каталогу - это один исключает ваше исключение

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