none
Sunucudan Silinen resmi klasörden de silme hakkında RRS feed

  • Genel Tartışma

  • Arkadaşlar file upload kontrolü kullanarak bir den fazla  (guid new ile benzersiz isimde) admin panelinden resim ekleyebiliyorum, daha sonra bunları admin panelinde gridviewde listeliyorum  ve gridview delete kontrolü ile de resimlerin tümünü sildiriyorum ama sql kayıtlar siliniyor resim klasöründe tüm resimler kalıyor  , Bunu nasıl çözebilirim  yardımcı olursanız sevinirm.

    Resim silme komutları şu şekilde ancak iş görmüyor,

            protected void ilanresim(object sender, GridViewDeleteEventArgs e)
            {
                string ilanID = GridView1.DataKeys[e.RowIndex].Value.ToString(); 
    
                SqlCommand cmdresil = new SqlCommand("Select resimAd, resimResim From Resim Where ilanID = @ilanID", baglan.baglan());    
                cmdresil.Parameters.AddWithValue("@ilanID", ilanID);
            
                SqlDataReader dr = cmdresil.ExecuteReader(); 
    
                while (dr.Read())
                {
                    //System.IO;
    
                    File.Delete(Server.MapPath("/iresim/") + dr["resimAd"].ToString() + ".jpg"); 
                }
                dr.Close(); 
    
                cmdresil = new SqlCommand("Delete From Resim where ilanID = @ilanID", baglan.baglan());
                        
                cmdresil.Parameters.AddWithValue("@ilanID", ilanID);
    
                cmdresil.ExecuteNonQuery();
            }   

    Gridview Şu şekilde ,

       <asp:GridView ID="GridView1" runat="server" DataKeyNames="ilanID" DataSourceID="SqlDataSource1" Width="1200px" AllowPaging="True" AllowSorting="True" HorizontalAlign="Center" Font-Size="12px" AlternatingRowStyle-Height="50px" AutoGenerateColumns="False" OnRowDeleting="ilanresim" >
    <AlternatingRowStyle Height="50px"></AlternatingRowStyle>
                <Columns>
                   <asp:ImageField DataAlternateTextField="ilanVResim" DataImageUrlField="ilanVResim" HeaderText="İlan Resim">
                    <ControlStyle Height="110px" Width="150px" />
                       <HeaderStyle HorizontalAlign="Center" Width="150px" VerticalAlign="Middle" />
                    </asp:ImageField>
                    <asp:BoundField DataField="ilanID" HeaderText="İlan No" InsertVisible="False" ReadOnly="True" SortExpression="ilanID" >
                    <HeaderStyle HorizontalAlign="Center" Width="75px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ilanTarih" HeaderText="İlan Tarih" SortExpression="ilanTarih">
                    <HeaderStyle HorizontalAlign="Center" Width="75px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ilanFiyat" HeaderText="İlan Fiyat" SortExpression="ilanFiyat" >
                    <HeaderStyle HorizontalAlign="Center" Width="75px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ilanBaslik" HeaderText="İlan Başlık" SortExpression="ilanBaslik" >
                    <HeaderStyle HorizontalAlign="Center" Width="100px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ilanAdres" HeaderText="İlan Adres" SortExpression="ilanAdres" >
                    <HeaderStyle HorizontalAlign="Center" Width="100px" />
                    </asp:BoundField>
                    <asp:BoundField DataField="ilanAciklama" HeaderText="İlan Açıklama" SortExpression="ilanAciklama" >
                    <HeaderStyle HorizontalAlign="Center" Width="250px" VerticalAlign="Middle" />
                    <ItemStyle Height="200px" HorizontalAlign="Center" />
                    </asp:BoundField>
                    <asp:CheckBoxField DataField="ilanVitrin" HeaderText="Vitrin" SortExpression="ilanVitrin" Text=" " >
                    <HeaderStyle Width="20px" />
                    </asp:CheckBoxField>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:HyperLink ID="HyperLink1" runat="server" Target="_blank" NavigateUrl='<%#"../ilandetay.aspx?ilanID="+DataBinder.Eval(Container.DataItem , "ilanID") %>'
                                Text="">İlana Git</asp:HyperLink>
                            </asp:LinkButton>
                        </ItemTemplate>
                          <ControlStyle Font-Bold="True" />
                          <FooterStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Middle" />
                          <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="75px"/>
                    </asp:TemplateField>
                    <asp:CommandField ShowDeleteButton="True" ShowEditButton="True" CancelText="İptal" DeleteText="Sil" EditText="Düzenle" UpdateText="Güncelleştir" >
                    <HeaderStyle HorizontalAlign="Center" VerticalAlign="Middle" Width="100px" />
                    </asp:CommandField>
                </Columns>
                 <HeaderStyle BackColor="#E62737" ForeColor="White" Height="30px" HorizontalAlign="Center" VerticalAlign="Middle" Font-Size="12px" />
                <PagerStyle HorizontalAlign="Center" VerticalAlign="Middle" />
                <RowStyle HorizontalAlign="Center" VerticalAlign="Middle" />
            </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:emlakDBConnectionString %>" DeleteCommand="DELETE FROM [Ilan] WHERE [ilanID] = @ilanID" InsertCommand="INSERT INTO [Ilan] ([ilanBaslik], [ilanFiyat], [ilanTarih], [ilanVResim], [ilanAdres], [ilanAciklama], [ilanVitrin]) VALUES (@ilanBaslik, @ilanFiyat, @ilanTarih, @ilanVResim, @ilanAdres, @ilanAciklama, @ilanVitrin)" SelectCommand="SELECT [ilanID], [ilanBaslik], [ilanFiyat], [ilanTarih], [ilanVResim], [ilanAdres], [ilanAciklama], [ilanVitrin] FROM [Ilan]" UpdateCommand="UPDATE [Ilan] SET [ilanBaslik] = @ilanBaslik, [ilanFiyat] = @ilanFiyat, [ilanTarih] = @ilanTarih, [ilanVResim] = @ilanVResim, [ilanAdres] = @ilanAdres, [ilanAciklama] = @ilanAciklama, [ilanVitrin] = @ilanVitrin WHERE [ilanID] = @ilanID">
                <DeleteParameters>
                    <asp:Parameter Name="ilanID" Type="Int32" />
                </DeleteParameters>
                <InsertParameters>
                    <asp:Parameter Name="ilanBaslik" Type="String" />
                    <asp:Parameter Name="ilanFiyat" Type="Int32" />
                    <asp:Parameter Name="ilanTarih" Type="DateTime" />
                    <asp:Parameter Name="ilanVResim" Type="String" />
                    <asp:Parameter Name="ilanAdres" Type="String" />
                    <asp:Parameter Name="ilanAciklama" Type="String" />
                    <asp:Parameter Name="ilanVitrin" Type="Boolean" />
                </InsertParameters>
                <UpdateParameters>
                    <asp:Parameter Name="ilanBaslik" Type="String" />
                    <asp:Parameter Name="ilanFiyat" Type="Int32" />
                    <asp:Parameter Name="ilanTarih" Type="DateTime" />
                    <asp:Parameter Name="ilanVResim" Type="String" />
                    <asp:Parameter Name="ilanAdres" Type="String" />
                    <asp:Parameter Name="ilanAciklama" Type="String" />
                    <asp:Parameter Name="ilanVitrin" Type="Boolean" />
                    <asp:Parameter Name="ilanID" Type="Int32" />
                </UpdateParameters>
            </asp:SqlDataSource>

    Yardımcı olailirseniz çok memnun olurum.


    14 Mayıs 2018 Pazartesi 12:08

Tüm Yanıtlar

  • Anladığım kadarıyla eklenen tüm resimleri tek seferde silmek istiyorsun, hem veritabanında hemde fiziksel klasörde. Doğru anladıysam eğer: Projenin ana dizininde bulunan "resimlerinbulunduğu" klasörün içine girip "*" filtrelemesiyle tüm dosyaları aratıyoruz. Her bulduğu dosya için item.Delete(); methodu çalışıyor item.Delete(); metodu ile her bulduğu dosyayı başarıyla siliyor.


    DirectoryInfo df = new DirectoryInfo(Server.MapPath("resimlerinbulunduğuklasör/"));
    
    foreach (FileInfo item in df.GetFiles("*.*"))
    {
          item.Delete();
    }



    Öğrenmek ne güzel şey...


    • Düzenleyen Murat Altu 16 Mayıs 2018 Çarşamba 07:39
    16 Mayıs 2018 Çarşamba 07:38
  • Anladığım kadarıyla eklenen tüm resimleri tek seferde silmek istiyorsun, hem veritabanında hemde fiziksel klasörde. Doğru anladıysam eğer: Projenin ana dizininde bulunan "resimlerinbulunduğu" klasörün içine girip "*" filtrelemesiyle tüm dosyaları aratıyoruz. Her bulduğu dosya için item.Delete(); methodu çalışıyor item.Delete(); metodu ile her bulduğu dosyayı başarıyla siliyor.


    DirectoryInfo df = new DirectoryInfo(Server.MapPath("resimlerinbulunduğuklasör/"));
    
    foreach (FileInfo item in df.GetFiles("*.*"))
    {
          item.Delete();
    }



    Öğrenmek ne güzel şey...


    Murat Bey cebabınız için teşekkürler ,

    Resimler sunucuda bir ID yer göre GuidNew ile rastgele isimde saklanıyor , web sayfasında /resimler klasöründe ise sadece Guidnew isminde saklanıyor,  yapmam gereken Delete butonuna bastığımda sunucudaki o ID ait resmin ismini web site içindeki /resimler klasöründen kontrol etmesi ve silmesi ardından da sunucudan silemesi.

    17 Mayıs 2018 Perşembe 10:22