一个简单的asp.net 管理Web站点文件的页面程序

先看效果

WebFileManager

 代码如下 复制代码

<!--
Author: 张浩华
DateTime: 2012-07-06 03:25
-----------------------------------
管理Web站点下文件的页面程序。
提供上传、重命名、删除、创建文件夹、下载等功能。
-->
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">
    string Msg = string.Empty;
    static string _CURRENT_PATH = "";
   
    protected void Page_Load(object sender, EventArgs e)
    {
        InitFiles();
        switch (Request["action"])
        {
            case "Root":
                Root();
                break;
            case "Back":
                Back();
                break;
            case "Open":
                Open(Request["FileName"]);
                break;
            case "Delete":
                Delete(Request["FileName"]);
                break;
        }
    }

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        if (fuFile.HasFile)
        {
            string currentPath = GetCurrentPath();
            string fileName = fuFile.FileName;
            if (rbCover.Checked)
            {
            }
            else if (rbRename.Checked)
            {
                while (System.IO.File.Exists(currentPath + fileName))
                {
                    fileName = "new_" + fileName;
                }
            }
            fuFile.SaveAs(currentPath + fileName);
        }
        InitFiles();
    }

    protected void btnSave_Click(object sender, EventArgs e)
    {
        string oleFileName = hfOldName.Value;
        string newFileName = txtNewName.Text;
        if (string.IsNullOrEmpty(newFileName))
        {
            Msg = "The file name can't for empty !";
            return;
        }
       
        string currentPath = GetCurrentPath();
        string oldPath = currentPath + oleFileName;
        string newPath = currentPath + newFileName;
        if (IsFile(oldPath))
        {
            if (System.IO.File.Exists(newPath))
            {
                Msg = "The file name repeated, please reset.";
                return;
            }
            System.IO.File.Move(oldPath, newPath);
        }
        else
        {
            if (string.IsNullOrEmpty(oleFileName))
            {
                System.IO.Directory.CreateDirectory(newPath);
            }
            else
            {
                System.IO.Directory.Move(oldPath, newPath);
            }
        }
        InitFiles();
    }

    private void Back()
    {
        string path = GetCurrentPath();
        string parent = new System.IO.DirectoryInfo(path).Parent.FullName + "\";
        if (parent.IndexOf(Server.MapPath("~/")) >= 0)
        {
            _CURRENT_PATH = parent;
        }
        Response.Redirect(Request.Url.AbsolutePath);       
    }
   
    private void Delete(string filename)
    {
        if (string.IsNullOrEmpty(filename)) return;
        string currentPath = GetCurrentPath();
        string path = currentPath + filename;
        if (IsFile(path))
        {
            System.IO.File.Delete(path);
        }
        else
        {
            try { System.IO.Directory.Delete(path, false); }
            catch { }
        }
        Response.Redirect(Request.Url.AbsolutePath);
    }
   
    protected string GetCreateTime(string name)
    {
        string currentPath = GetCurrentPath();
        string path = currentPath + name;
        return System.IO.File.GetCreationTime(path).ToString("yyyy-MM-dd HH:mm:ss");
    }

    private string GetCurrentPath()
    {
        return string.IsNullOrEmpty(_CURRENT_PATH) ? Server.MapPath("~/") : _CURRENT_PATH;
    }

    protected string GetIcon(string name)
    {
        string currentPath = GetCurrentPath();
        string path = currentPath + name;
        if (IsFile(path))
        {
            int dotPlace = name.LastIndexOf('.');
            if (dotPlace < 0)
            {
                return "";
            }
            else
            {
                return name.Substring(dotPlace + 1);
            }
        }
        else
        {
            return "{DIR}";
        }
    }

    protected string GetSize(string name)
    {
        string currentPath = GetCurrentPath();
        string path = currentPath + name;
        if (IsFile(path))
        {
            long length = new System.IO.FileInfo(path).Length;
            return ((length / 1024) + 1) + " KB (" + length + "B)";
        }
        else
        {
            return "unknow";
        }
    }

    protected string GetUpdateTime(string name)
    {
        string currentPath = GetCurrentPath();
        string path = currentPath + name;
        return System.IO.File.GetLastWriteTime(path).ToString("yyyy-MM-dd HH:mm:ss");
    }
   
    private void InitFiles()
    {
        string currentPath = GetCurrentPath();
        string[] directorys = System.IO.Directory.GetDirectories(currentPath);
        string[] files = System.IO.Directory.GetFiles(currentPath);
        System.Collections.Generic.IList<string> arr = new System.Collections.Generic.List<string>();
        foreach (string s in directorys)
        {
            arr.Add(s.Replace(currentPath, ""));
        }
        foreach (string s in files)
        {
            arr.Add(s.Replace(currentPath, ""));
        }

        rptFile.DataSource = arr;
        rptFile.DataBind();  
    }
   
    private bool IsFile(string path)
    {
        return System.IO.File.Exists(path);
    }

    private void Open(string fileName)
    {
        string currentpath = GetCurrentPath();
        string path = currentpath + fileName;

        if (IsFile(path))
        {
            System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
            Response.Clear();
            Response.ClearContent();
            Response.ClearHeaders();
            Response.AddHeader("Content-Disposition", "attachment;filename=" + fileName);
            Response.AddHeader("Content-Length", fileInfo.Length.ToString());
            Response.AddHeader("Content-Transfer-Encoding", "binary");
            Response.ContentType = "application/octet-stream";
            Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");
            Response.WriteFile(fileInfo.FullName);
            Response.Flush();
            Response.End();
           
        }
        else
        {
            _CURRENT_PATH = path + "\";
            Response.Redirect(Request.Url.AbsolutePath);
        }
    }
   
    private void Root()
    {
        _CURRENT_PATH = Server.MapPath("~/");
        Response.Redirect(Request.Url.AbsolutePath);
    }
   
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        body{ margin:0; padding:10px; background:#aaf; font-family:Arial 宋体; font-size:14px; }

        #container{ border:1px #ddd solid;}
        #menu{ background-color:#ccc; }
        #menu .line{ border-left:solid 1px #fff; width:0; }
        #menu a{ display:inline-block; margin:0; padding:8px 12px; text-decoration:none;  }
        #menu a:active,#menu a:hover{ background-color:#ddd;  }
       
        #main{ height:450px; }
        #main .file{ float:left; width:100px; height:60px; margin:8px; padding:5px; overflow:hidden; text-align:center; }
        #main .file .icon{ margin:0 5px; font-family:Impact,Arial Black; font-size:30px; width:85px; height:40px; overflow:hidden; }
        #main .file .name{ font-size:12px; }

        #main, #upload_panel, #rename_panel{ background-color:#fff; border:1px #ddd solid; border-left:0; border-right:0; }
        #upload_panel, #rename_panel{ padding:10px; }

        #status_bar{ background-color:#ccc; }
        #status_bar span{ display:inline-block; margin:0; padding:5px 30px 5px 8px; border-left:solid 1px #ddd; }
    </style>
    <script type="text/javascript">
        var Page = { CurrentFile: null };

        /* 页面加载 */
        function PageLoad() {
            InitMenu();
            InitFile();
            InitStatusBar();
            InitPanel();
            ShowMessage();
        }

        /* 初始化菜单 */
        function InitMenu() {
            /* 页面加载事件,处理初始化页面操作 */
            var menuItems = document.getElementById("menu").childNodes;
            for (var menu in menuItems) {
                if (menu >= 0 && (menuItems[menu].tagName + "").toUpperCase() == "A") {
                    var a = menuItems[menu];
                    a.onclick = ClickMenuItem;
                }
            }
        }

        /* 初始化文件列表事件 */
        function InitFile() {
            var files = document.getElementById("main").childNodes;
            for (var k in files) {
                if (k >= 0 && (files[k].className + "").toLowerCase().indexOf("file") >= 0) {
                    var file = files[k];
                    file.style.cursor = "pointer";
                    file.onclick = ClickFile;
                }
            }
        }

        /* 初始化“上传文件”和“修改文件名”模块 */
        function InitPanel() {
            document.getElementById("upload_panel").style.display = "none";  //隐藏上传文件模块
            document.getElementById("rename_panel").style.display = "none";  //隐藏修改文件名模块
            document.getElementById("fuFile").value = "";  //清空上传文件控件
            document.getElementById("txtNewName").value = "";  //清空名称文本框
            document.getElementById("hfOldName").value = "";  //清空名称文本框
            document.getElementsByName("btnCancel")[0].onclick = InitPanel;  //绑定 Cancel 按钮 Click 事件
            document.getElementsByName("btnCancel")[1].onclick = InitPanel;  //绑定 Cancel 按钮 Click 事件
        }

        /* 初始化状态栏 */
        function InitStatusBar() {
            var statusItems = document.getElementById("status_bar").childNodes;
            for (var itemKey in statusItems) {
                if (itemKey >= 0 && (statusItems[itemKey].tagName + "").toUpperCase() == "SPAN") {
                    var span = statusItems[itemKey];
                    var value = Page.CurrentFile == null ? "" : Page.CurrentFile.getAttribute(span.className);
                    if ("filename" == span.className.toLowerCase()) span.innerHTML = "FileName: " + value;
                    if ("type" == span.className.toLowerCase()) span.innerHTML = "Type: " + value;
                    if ("size" == span.className.toLowerCase()) span.innerHTML = "Size: " + value;
                    if ("create_time" == span.className.toLowerCase()) span.innerHTML = "CreateTime: " + value;
                    if ("update_time" == span.className.toLowerCase()) span.innerHTML = "LastUpdateTime: " + value;
                }
            }
        }

        /* 单击菜单项事件 */
        function ClickMenuItem() {
            InitPanel();
            var id = this.id;

            switch (id) {
                case "Root":
                    location.search = 'action=Root';
                    break;
                case "Back":
                    location.search = 'action=Back';
                    break;
                case "Open":
                    Open();
                    break;
                case "NewFolder":
                    document.getElementById("rename_panel").style.display = "";
                    break;
                case "Upload":
                    document.getElementById("upload_panel").style.display = "";
                    break;
                case "Rename":
                    Rename();
                    break;
                case "Delete":
                    Delete()
                    break;
            }

            return false;  //不响应超链接跳转操作
        }

        /* 单击文件事件 */
        function ClickFile() {
            if (Page.CurrentFile != null) {
                Page.CurrentFile.style.background = "";
            }

            if (Page.CurrentFile == this) {
                Page.CurrentFile.style.background = "";
                Page.CurrentFile = null;
            } else {
                this.style.background = "#ddd";
                Page.CurrentFile = this;
            }
            InitStatusBar();
            InitPanel();
        }

        function Delete() {
            if (Page.CurrentFile != null) {
                location.search = 'action=Delete&FileName=' + Page.CurrentFile.getAttribute("filename");
            }
        }

        function Open() {
            if (Page.CurrentFile != null) {
                location.search = 'action=Open&FileName=' + Page.CurrentFile.getAttribute("filename");
            }
        }

        function Rename() {
            if (Page.CurrentFile != null) {
                document.getElementById("txtNewName").value = Page.CurrentFile.getAttribute("filename");
                document.getElementById("hfOldName").value = Page.CurrentFile.getAttribute("filename");
                document.getElementById("rename_panel").style.display = "";
            }
        }

        function ShowMessage() {
            var msg = "<%=Msg %>";
            if (msg != "") {
                alert(msg);
            }
        }
    </script>
</head>
<body onload="PageLoad()">
    <form id="form1" runat="server">
    <div id="container">
        <div id="menu">
            <a href="#" id="Root">Root</a>
            <a href="#" id="Back">Back</a>
            <a href="#" id="Open">Open(Download)</a>
            <a class="line"></a>
            <a href="#" id="NewFolder">NewFolder</a>
            <a href="#" id="Upload">Upload</a>
            <a href="#" id="Rename">Rename</a>
            <a href="#" id="Delete">Delete</a>
        </div>
        <div id="main">
            <asp:Repeater ID="rptFile" runat="server">
                <ItemTemplate>
            <div class="file"
                filename="<%# Container.DataItem %>"
                size="<%# GetSize(Container.DataItem + "") %>"
                type="<%# GetIcon(Container.DataItem + "") %>"
                create_time="<%# GetCreateTime(Container.DataItem + "") %>"
                update_time="<%# GetCreateTime(Container.DataItem + "") %>">
                <div class="icon"><%# GetIcon(Container.DataItem + "") %></div>
                <div class="name"><%# Container.DataItem %></div>
            </div>
                </ItemTemplate>
            </asp:Repeater>
            <div style="clear:both;"></div>
        </div>
        <div id="upload_panel">
            <asp:FileUpload ID="fuFile" runat="server" />&nbsp;
            <asp:RadioButton ID="rbCover" runat="server" GroupName="FileReapter" Text="Cover" Checked="true" />
            <asp:RadioButton ID="rbRename" runat="server" GroupName="FileReapter" Text="Rename" />&nbsp;
            <asp:Button ID="btnUpload" runat="server" Text="Upload" onclick="btnUpload_Click" />&nbsp;
            <input name="btnCancel" type="button" value="Cancel" />
        </div>
        <div id="rename_panel">
            <asp:TextBox ID="txtNewName" runat="server" Text="asdf"></asp:TextBox>&nbsp;
            <asp:Button ID="btnSave" runat="server" Text="Save" onclick="btnSave_Click" />&nbsp;
            <input name="btnCancel" type="button" value="Cancel" />
            <asp:HiddenField ID="hfOldName" runat="server" />
        </div>
        <div id="status_bar">
            <span class="filename">名称:</span>
            <span class="type">类型:</span>
            <span class="size">大小:</span>
            <span class="create_time">创建时间:</span>
            <span class="update_time">修改时间:</span>
        </div>
    </div>
    </form>
</body>
</html>

时间: 2024-09-12 18:22:29

一个简单的asp.net 管理Web站点文件的页面程序的相关文章

Asp.net--开发web站点管理工具

问题描述 介绍基于Forms的验证,再结合ASP.NET2.0的成员资格和角色管理系统,使得创建和管理用户账户变得相当地简单.另外,还有一个让人感到非常爽的特性,就是与登录相关的web控件封装了大量的任务,这使得我们不用再像以前ASP那样手写很多代码.本文用到了ASP.NET2.0的成员资格和角色管理系统,你可以先参考一下ExaminingASP.NET2.0'sMembership,Roles,andProfiles系列文章.为了帮助你管理用户.角色和权限设置,ASP.NET2.0包含了一个W

asp net 管理系统-求一个简单的asp的web页面管理系统,只要求实现增删改查就行

问题描述 求一个简单的asp的web页面管理系统,只要求实现增删改查就行 求大神发一个初学者的管理给我,顺带讲解讲解,实在做不出来....................qq:732796124

使用C# Builder创建一个简单的ASP.NET应用程序

一般网站建设通常要求开发人员做后台的程序设计,前面有专业的美工做界面设计.虽然有时候开发人员也会做些界面设计,但是通常都无法达到专业的要求.在以前的ASP中,由于代码和HTML页面语言混杂在一起,这就使得网站的建设变得相当的困难.但在ASP.NET中,这种情况完全改变了.下面就用C# Builder创建一个简单的ASP.NET应用程序. 打开C# Builder,选择 File>New>other-菜单项,你将会看到下面的窗口: 我们选择C# ASP Projects,你就会看到右边有3种可供

IE8浏览器下使用虚拟服务器管理Web站点的注意事项

无论是用户在Windows 7操作系统下运行虚拟服务器还是在Windows 7操作系统下管理虚拟服务器,都需要在IE8浏览器下使用"虚拟服务器管理Web站点".据国外媒体报道,微软澳大利亚网站日前开始推广IE8浏览器,建议IE6用户尽快升级. 网站在网站上称:"人们不会喝9年前的牛奶,因此为什么还要用9年前的浏览器呢?IE6早在2001年就推出,当时很安全.但随着互联网的发展,IE6的安全功能已经过时." 微软还称,NSS实验室调查结果显示,IE8可抵御85%的社交

ASP.NET中Web.config文件的层次关系详细介绍

Web.config 是一个基于 XML 的配置文件,该文件的作用是对应用程序进行配置,下面为大家介绍下ASP.NET中Web.config文件的层次关系 Web.config 是一个基于 XML 的配置文件,该文件的作用是对应用程序进行配置,比如规定客户的认证方法,基于角色的安全技术的策略,数据绑 定的方法,远程处理对象等. 可以在网站的根目录和子目录下分别建立自己的 Web.config 文件,也可以一个Web.config 文件都不建立,Web.config 并不是网站必备的文件.这是因为

java-jsp+servlet写了一个简单的注册,但是出现找不到页面

问题描述 jsp+servlet写了一个简单的注册,但是出现找不到页面 小菜鸟刚写了一个简单的注册页面,但是配置好servlet以后出现找不到页面,找了好长时 间没有发现问题在哪里,希望有明白的给解释解释 解决方案 你写的是相对路径 ,一般用绝对路径 form 在 项目/page 下找相应页面,你的servlet 是映射在 项目/ 下的 你可以 在form 的action 改为 ../addUser 试试 解决方案二: 看看这个: 路径总结: 路径分为两种情况: 1.客户端路径 ==> 给浏览器

从一个简单的ASP.NET 5站点开启.NET跨平台之旅

  在经历了阿里云上"黑色1秒"的空欢喜之后,我们"被迫"考虑实现.NET的跨平台,将Web服务器由Windows换成Linux.而这种"被迫"在一个存在已久的愿望下,变得水到渠成.这个愿望就是 -- "Mac上写.NET程序,Linux上跑.NET程序". 既然水也到了,渠也成了,那我们还等什么,动身起程吧. 今天我们以我们迈出的第一步--一个部署在Linux上基于dnx/corefx/coreclr的非常简单的ASP.NE

ASP.NET将Web站点下的绝对路径转换为虚拟路径

asp.net|web|站点|转换 很经常使用到的一个功能,但在在网上却一直没有找到相关的解决方法,今天借着项目应用到的机会写了两个将绝对路径转换为虚拟路径封装好的方法将Web站点下的绝对路径转换为相对于指定页面的虚拟路径/**//// <summary>/// 将Web站点下的绝对路径转换为相对于指定页面的虚拟路径/// </summary>/// <param name="page">当前页面指针,一般为this</param>///

使用ADSI实现IIS管理,WEB站点管理系统核心代码

代码 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Collections; using System.DirectoryServices; using IISMModel; using System.Configuration; using System.Web;  namespace IISMBLL {     /// <summary>