首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET + XML 打造網路硬碟:資料夾瀏覽與權限控制

     編輯:關於ASP.NET

結合 ASP.NET (CLR 平台) 與 XML (跨平台資料描述) 開發功能完整的網路硬碟:資料夾樹狀瀏覽、建立/刪除/重命名、上傳下載、密碼保護、權限管理。本文重點示範「動態讀取資料夾內容並繫結 DataGrid」核心邏輯。

架構優勢

  • ASP.NET 提供伺服器端強大控制項、狀態管理、安全管線。
  • XML 作為中繼資料儲存(資料夾屬性、權限、使用者對應),易擴充、免資料庫。
  • HTTP 傳輸、瀏覽器存取,支援「一空間、多使用者、資源共享」。

核心功能:動態列出資料夾內容

public DataTable Bind(string fullFolderPath)
{
    DataTable dt = new DataTable();
    // 定義欄位
    dt.Columns.Add("type", typeof(string));   // 檔案/資料夾
    dt.Columns.Add("name", typeof(string));   // 名稱
    dt.Columns.Add("action", typeof(string)); // 操作連結
    dt.Columns.Add("owner", typeof(string));  // 建立者

    foreach (string entry in Directory.GetFileSystemEntries(fullFolderPath))
    {
        DataRow dr = dt.NewRow();
        string name = Path.GetFileName(entry);
        dr["name"] = name;

        if (File.Exists(entry))
        {
            dr["type"] = "檔案";
            // 產生下載連結
            string relUrl = fullFolderPath.Substring(fullFolderPath.IndexOf("NetHard"));
            string url = "https://202.115.64.13/SharedSpace/" + relUrl + "/" + name;
            dr["action"] = $"下載";
        }
        else if (Directory.Exists(entry))
        {
            dr["type"] = "資料夾";
            string pwd = GetFolderPassword(entry);
            int limitType = GetFolderLimitType(entry);
            if (pwd != "no" && limitType != 1)
                dr["action"] = $"密封";
            else
                dr["action"] = $"進入";
            dr["owner"] = GetFolderOwner(entry);
        }
        dt.Rows.Add(dr);
    }
    return dt;
}

前端繫結

<asp:DataGrid ID="dgFolder" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:TemplateColumn HeaderText="類型">
            <ItemTemplate><%# Eval("type") %></ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="名稱">
            <ItemTemplate><%# Eval("name") %></ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="操作">
            <ItemTemplate><%# Eval("action") %></ItemTemplate>
        </asp:TemplateColumn>
        <asp:TemplateColumn HeaderText="建立者">
            <ItemTemplate><%# Eval("owner") %></ItemTemplate>
        </asp:TemplateColumn>
    </Columns>
</asp:DataGrid>

權限與密碼機制

  • 每個資料夾對應一個 XML 檔 (folder.xml) 記錄 Password、LimitType(0=公開、1=唯讀、2=密碼保護)、Owner。
  • 進入資料夾前檢查 Session 是否已驗證密碼,未驗證導向 PasswordValidate.aspx。
  • 上傳/刪除/重命名操作同樣檢查權限再執行 File/Directory API。

擴充建議

  • 改用 GridView + ObjectDataSource 簡化繫結代碼。
  • 引入 jQuery File Upload 實現分塊上傳、進度條。
  • 資料夾中繼資料改存 SQLite 或 SQL Server,支援併發與查詢。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved