使用数据列表从文件夹中删除图像

Delete image from folder using data list

我通过从文件夹中获取图像来在 DataList 中显示一些图像。现在,我想在我的数据列表中单击删除按钮时删除文件夹中的图像。

我的问题是我无法从以下位置获取文件名:

string fileName = e.CommandArgument.ToString();

我尝试了几种解决方案,但没有得到正确的解决方案。

Html 标记:

<asp:DataList OnDeleteCommand="gvImages_DeleteCommand" ID="gvImages" RepeatColumns="5" 
              RepeatDirection="Horizontal" GridLines="Horizontal" runat="server" 
              BorderColor="#336699" BorderStyle="Solid" ShowHeader="true">
    <ItemTemplate>
    <center>
        <table>
            <tr>
                <td style="width: 90px; height: 90px">
                    <img id="PICID" runat="server" src='<%# Container.DataItem %>' alt='' 
                         style="height: 100px; width: 100px;" /><br />
                    <asp:Button ID="Delete" Height="22px" CommandName="Delete" 
                                Width="100px" runat="server" Text="Delete Picture" /><br />
                </td>
            </tr>
        </table>
    </center>
    </ItemTemplate>
</asp:DataList>

代码隐藏:

protected void gvImages_DeleteCommand(object source, DataListCommandEventArgs e)
{
    //you can hold filename on Button's  CommandArgument 

    string fileName = e.CommandArgument.ToString();

   // here i can not get the file name to delete it from the folder

    File.Delete(Server.MapPath(fileName));

    FileInfo fInfo;

    fInfo = new FileInfo(fileName);

    fInfo.Delete();

    gvImages.DataBind();
}

您必须在 DataList 中添加 asp:Image 控件并尝试:

Html 标记: FilePath 是数据源中的列名。

<asp:Image ID="PICID" runat="server" 
           ImageUrl='<%# DataBinder.Eval(Container.DataItem, "FilePath") %>' />

代码隐藏:gvImages_DeleteCommand 事件中:

string url = ((Image)gvImages.Items[e.Item.ItemIdex].FindControl("PICID")).ImageUrl;

string path = Server.MapPath(url);

if (File.Exists(path))
{
    File.Delete(path); // deletes file from folder
}