2015-11-18 2 views
-1

Я был создан для загрузки изображения с изменениями и обновлением.не удалось удалить изображение, если оно уже существует в C#

Когда я вставляю изображение, оно будет храниться как на жестком диске, так и в базе данных.

Если вы редактируете и загружаете другой файл и нажимаете обновление, он будет изменен в gridview. но также хочу удалить, если вы уже загрузили изображение на жесткий диск.

Вот мой полный источник:

protected void btnsub_Click(object sender, EventArgs e) 
     { 
      SqlConnection con = Connection.DBconnection(); 
      if (Textid.Text.Trim().Length > 0) 
      { 
       SqlCommand com = new SqlCommand("StoredProcedure3", con); 
       com.CommandType = CommandType.StoredProcedure; 
       com.Parameters.AddWithValue("@id", Textid.Text.Trim()); 
       com.Parameters.AddWithValue("@Name", Textusername.Text.Trim()); 
       com.Parameters.AddWithValue("@Class", Textclass.Text.Trim()); 
       com.Parameters.AddWithValue("@Section", Textsection.Text.Trim()); 
       com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim()); 
       try 
       { 
        string filename = Image1.ImageUrl.Substring(Image1.ImageUrl.IndexOf('/')+1); 
        string filepath = @"E\student\student\student\Images"; 
        if (Directory.Exists(Path.GetDirectoryName(filepath))) 
        { 
         File.Delete(filepath); 
        } 
        if (fileupload.PostedFile.FileName.Length > 0) 
        {       
         filename = Path.GetFileName(fileupload.PostedFile.FileName); 

         fileupload.SaveAs(Server.MapPath("~/Images/" + filename)); 
        } 

        com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty); 
        com.ExecuteNonQuery();      
       } 
       catch (Exception ex) 
       { 
        btnsub.Text = ex.Message; 
       } 
       Response.Redirect("studententry.aspx"); 
      } 
      else 
      { 
       SqlCommand com = new SqlCommand("StoredProcedure1", con); 
       com.CommandType = CommandType.StoredProcedure; 
       com.Parameters.AddWithValue("@Name", Textusername.Text.Trim()); 
       com.Parameters.AddWithValue("@Class", Textclass.Text.Trim()); 
       com.Parameters.AddWithValue("@Section", Textsection.Text.Trim()); 
       com.Parameters.AddWithValue("@Address", Textaddress.Text.Trim()); 
       try 
       { 
        string filename = string.Empty; 
        if (fileupload.PostedFile.FileName.Length > 0) 
        { 
         filename = Path.GetFileName(fileupload.PostedFile.FileName); 
         fileupload.SaveAs(Server.MapPath("~/Images/" + filename)); 
        } 
        com.Parameters.AddWithValue("@Image",(filename.Length>0)? "Images/" + filename:string.Empty); 
        com.ExecuteNonQuery();      
       } 
       catch (Exception ex) 
       { 
        btnsub.Text = ex.Message; 
       } 
       Response.Redirect("studententry.aspx"); 
      } 
     } 

Могу ли я узнать, как удалить, если уже загружено изображение на жестком диске?

Любая помощь будет высоко оценена.

Спасибо,

+0

Что такое исключение ? –

+2

if (Directory.Exists (Path.GetDirectoryName (путь к файлу))) { Файл.Delete (путь к файлу); } что это означает, что если каталог существует, то вы удаляете его, и вы снова пытаетесь сохранить изображение в одном каталоге –

+0

Пател прав, и вы пропустили: знак, E: \ student \ ... – owairc

ответ

0

Комментарий этот код, бесполезно, а также неправильно, SaveAs будет overwright файл

   string filepath = @"E\student\student\student\Images"; 
       if (Directory.Exists(Path.GetDirectoryName(filepath))) 
       { 
        File.Delete(filepath); 
       } 

, если вы действительно хотите удалить:

if (fileupload.PostedFile.FileName.Length > 0) 
{       
filename = Path.GetFileName(fileupload.PostedFile.FileName); 
if(File.Exists(Server.MapPath("~/Images/" + filename))) 
    File.Delete(Server.MapPath("~/Images/" + filename)); 
fileupload.SaveAs(Server.MapPath("~/Images/" + filename)); 
} 

редактировать снова :

string[] files = Directory.GetFiles(Server.MapPath("~/Images")); 
foreach(string f in files) File.Delete (f); 

if (fileupload.PostedFile.FileName.Length > 0) 
{       
filename = Path.GetFileName(fileupload.PostedFile.FileName); 
fileupload.SaveAs(Server.MapPath("~/Images/" + filename)); 
} 
+0

то как я могу удалить, если уже существует изображение? – pcs

+0

Вы хотите удалить, чтобы сохранить снова, нет необходимости удалять, просто saveas – owairc

+0

Не так, когда в режиме редактирования, если я меняю изображение и обновляю, я хочу удалить уже загруженное изображение .. – pcs

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