繁体   English   中英

如何将网页上的硬盘文件夹与数据列表绑定?

[英]How to bind a folder of my hard disk on my webpage with datalist?

我想在我的网页上显示驱动器上的所有jpg文件

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        DirectoryInfo dir = new DirectoryInfo(MapPath("D:\pstRZ"));
        FileInfo[] files = dir.GetFiles();
        ArrayList listItems = new ArrayList();

        foreach (FileInfo info in files)
        {
            listItems.Add(info);
        }

        dtlist.DataSource = listItems;
        dtlist.DataBind();
    }
}

如果需要将图像存储在Web应用程序文件夹之外,则需要以任何方式将图像提供给用户,解决方案之一是使用httphandler。

这是您的布局:

<asp:DataList runat="server" ID="dtlist">
    <ItemTemplate>
        <img src="GetImage.ashx?fileName=<%#Eval("Name")%>" alt="Image"/>
    </ItemTemplate>
</asp:DataList>

是您的代码:

if (!IsPostBack)
{
    var dir = new DirectoryInfo("D:\\Images\\");
    var files = dir.GetFiles("*.png");
    var listItems = new ArrayList();

    foreach (FileInfo info in files)
    {
        listItems.Add(info);
    }

    dtlist.DataSource = listItems;
    dtlist.DataBind();
}            

这是http处理程序GetImage.ashx:

    public void ProcessRequest(HttpContext context)
    {
        var root = "D:\\Images";

        var fileName = context.Request.Params["fileName"];
        if (String.IsNullOrEmpty(fileName)) RenderInvalidRequestMessage(context);

        var fullFilePath = root + "\\" + fileName;
        //var dir = (new FileInfo(fullFilePath)).Directory;
        //if (dir == null || dir.FullName != root) RenderInvalidRequestMessage(context);

        if (!File.Exists(fullFilePath)) RenderInvalidRequestMessage(context);

        //TODO: Add validation and any security check.

        context.Response.ContentType = "image/png";            
        context.Response.WriteFile(fullFilePath);
    }

    private void RenderInvalidRequestMessage(HttpContext context)
    {
        context.Response.ContentType = "text/plain";
        context.Response.Write("File not found.");
        context.Response.End();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM