IIS目录浏览优化

iis开启的目录浏览功能默认是按照文件名称排序的,但我们有个特殊的要求,想要按照时间排序,搜索了下,没有相关方法,于是有了本篇内容

<%@ Page Language="C#" %>

<%@ Import Namespace="System.IO" %>

<!DOCTYPE html>

<%
    var baseDir = HttpContext.Current.Server.MapPath("~/");
    var currentDir = HttpContext.Current.Request.QueryString["dir"];
    currentDir = string.IsNullOrWhiteSpace(currentDir)
        ? baseDir
        : Path.Combine(baseDir, currentDir);

    if (!currentDir.EndsWith("\\")) currentDir += "\\";

    var baseDirInfo = new DirectoryInfo(baseDir);
    var currentDirInfo = new DirectoryInfo(currentDir);

    var myDirs = Directory.GetDirectories(currentDir);
    var tmpDirInfos = (from d in myDirs select new DirectoryInfo(d)).ToArray();
    var myDirInfos = tmpDirInfos
        .Where(a => a.Name.StartsWith("★"))
        .OrderBy(a => a.CreationTime)
        .ToArray()
        .Concat(tmpDirInfos
            .Where(a => !a.Name.StartsWith("★"))
            .OrderBy(a => a.CreationTime)
            .ToArray())
        .ToArray();

    var myFiles = Directory.GetFiles(currentDir);
    var myFileInfos = (from f in myFiles select new FileInfo(f)).OrderBy(a => a.LastWriteTime).ToList();
%>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
        body {
            font-size: 12px
        }

        table {
            width: 100%;
            border: 1px solid #ddd;
            border-spacing: 0;
            border-radius: 5px;
            border-bottom: none;
        }

        td, th {
            border-bottom: 1px solid #ddd;
            padding: 5px;
            text-align: left;
        }
    </style>
</head>
<body>
    <%
        if (currentDir.StartsWith(baseDir))
        {
    %>
    <h2>
        <%= HttpContext.Current.Request.Url.Host %><br />
    </h2>
    <hr />
    <div style="padding: 5px">带 ★ 的文件夹将排在前面</div>
    <table>
        <thead>
            <tr>
                <th style="width: 150px">时间</th>
                <th>名称</th>
                <th>大小</th>
            </tr>
        </thead>
        <tbody>
            <%  
                if (currentDirInfo.FullName.Length > baseDirInfo.FullName.Length)
                {
                    if (currentDirInfo.Parent != null)
                    {
                        var parentDirStr = currentDirInfo.Parent.FullName;
                        if (!parentDirStr.EndsWith("\\")) parentDirStr += "\\";
            %>
            <tr>
                <td>-
                </td>
                <td>
                    <a href="?dir=<%=parentDirStr.Replace(baseDir, "") %>">../</a>
                </td>
                <td>-
                </td>
            </tr>
            <% }
                }%>

            <%foreach (var dirInfo in myDirInfos)
                {
            %>
            <tr>
                <td>
                    <%= dirInfo.CreationTime.ToString("yyyy-MM-dd HH:mm:ss") %>
                </td>
                <td>
                    <a href="?dir=<%=dirInfo.FullName.Replace(baseDir,"") %>"><%= dirInfo.Name %></a>
                </td>
                <td>-
                </td>
            </tr>
            <%}%>

            <%foreach (var fileInfo in myFileInfos)
                {
                    if(fileInfo.FullName.Equals(Path.Combine(baseDir,"web.config"),StringComparison.OrdinalIgnoreCase))continue;
                    if(fileInfo.FullName.Equals(Path.Combine(baseDir,"Default.aspx"),StringComparison.OrdinalIgnoreCase))continue;
                    if(fileInfo.FullName.Equals(Path.Combine(baseDir,"Web.Debug.config"),StringComparison.OrdinalIgnoreCase))continue;
            %>

            <%
            %>
            <tr>
                <td>
                    <%= fileInfo.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss") %>
                </td>
                <td>
                    <a href="<%=fileInfo.FullName.Replace(baseDir,"").Replace("\\","/") %>">
                        <%= fileInfo.Name %>
                    </a>
                </td>
                <td>
                    <%= fileInfo.Length %>
                </td>
            </tr>
            <%}%>
        </tbody>
    </table>
    <%
        }
        else
        {
    %>
    <div>越界</div>
    <%
        }
    %>
</body>
</html>

将上面内容拷贝写入 Default.aspx文件,然后将他放到开启目录浏览的根目录下,然后在浏览相关目录,将得到如下的界面

 

 该界面的内容将按照时间升序排列

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值