ExtJS 實現的Web檔案管理系統

來源:互聯網
上載者:User

 

上次的文章發了就等到了一個面試機會,還沒成就來北京了上了一個.net培訓班。這個是這裡老師安排的作業,讓用.netAJAX實現的,想了想覺得那ExtJS+XML寫可能更好這個東西就出來,主要思想是用ExtJS實現前台的UI,然後用AJAX方式實現和伺服器的資訊互動,這裡沒有用到一下ASP.NET下的AJAX實現,就是用的ExtJS自己的AJAX實現。主要是因為效率的考慮,再有就是ExtJS構建的頁面基本上覺得就沒有使用其他AJAX技術的必要了,他的頁面已經沒有重新整理了,要的就是資料而已,資料是通過一般處理常式生產XML實現的。下面就是具體的實現方式,和遇到的一些問題。


ExtJS我也是第一次使用,我希望我的經曆也可以給和我一樣初學ExtJS的朋友一些提示(畢竟當時走了不少彎路)。
ExtJS 和Jquery很像大部分的功能實現都是在初始化的時候實現的。基本沒有是用一個input調用的。個人覺得這個比JQuery做的還有很,比如 JQuery的AJAX還可以寫在input裡面,但是ExtJS你會發現你要是這麼寫了,其他的東西就很難編寫了。Ext還像C#一樣實現了:屬性,方法,甚至實現了事件的機制。大部分ExtJS控制項都有一個handler可以通過配置它來出發實現一些事件。而在定義ExtJS控制項的時候有點像定義 ASP.NET控制項一樣有一些配置的資訊跟在其後,看了ExtJS以後舉得這個東西可以說是完全的JS的物件導向了,強悍強悍。
下面我就介紹一下我這裡web檔案管理系統了

首先是一些檔案壓縮,拷貝等的BLL這裡就不做太多的介紹了,就是一些System.File.IO的一些為對檔案進行操作的類,已實現前台的一些功能。

用於檔案描述的類

  檔案描述類
//枚舉類型描述檔案是檔案還是檔案夾    
public enum FileType { File, Folder };
//檔案描述類
public class DealFiles
{
     public string FileName { get; set; }
     public FileType fileType { get; set; }
     public DealFiles(string Name, FileType Type)
     {
        
         FileName = Name;
         fileType = Type;
     }
     public DealFiles()
     { }

 

IO檔案操作類

  FileManager.cs
using System;
using System.Collections.Generic;
using System.Web;
using System.IO;

/// <summary>
///realize file manager handler (new folder,new file,copy,paste,del,move,rename,cut)
/// </summary>
namespace DragonJ
{
    public class FileManager
    {
        public FileManager()
        {
            //
            //TODO: 在此處添加建構函式邏輯
            //
        }
        public string path { get; set; }
        public FileManager(string ParentPath)
        {
            this.path = ParentPath;
        }
        /// <summary>
        /// 複製檔案和檔案夾(外部存取)
        /// </summary>
        /// <param name="list"></param>
        /// <param name="comedir"></param>
        /// <param name="todir"></param>
        /// <returns></returns>
        public bool CopyFiles(List<DealFiles> list, string comedir, string todir)
        {
            bool ret = false;
            try
            {
                foreach (DealFiles i in list)
                {
                    if (i.fileType == FileType.Folder)
                    {
                        FolderCopy(i.FileName, comedir, todir);
                    }
                    else
                    {
                        DataCopy(i.FileName, comedir, todir);
                    }
                }
                ret = true;
            }
            catch (Exception e)
            {

                throw e;
            }
            return ret;
        }
        /// <summary>
        /// 複製檔案到指定目錄
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="comedir"></param>
        /// <param name="todir"></param>
        /// <returns></returns>
        private bool DataCopy(string filename, string comedir, string todir)
        {
            bool ret = false;
            string new_filename;
            if (comedir == todir)
            {
                new_filename = "複製" + filename;
            }
            else
            {
                new_filename = filename;
            }
            try
            {
                File.Copy(Path.Combine(comedir, filename), Path.Combine(todir, filename));
                ret = true;
            }
            catch (Exception e)
            {
                throw e;
            }
            return ret;
        }

        /// <summary>
        /// 複製檔案夾到指定目錄
        /// </summary>
        /// <param name="folderName"></param>
        /// <param name="comedir"></param>
        /// <param name="todir"></param>
        /// <returns></returns>
        private bool FolderCopy(string folderName, string comedir, string todir)
        {
            bool ret = false;
            string new_folderName;
            if (comedir == todir)
            {
                new_folderName = "複製" + folderName;
            }
            else
            {
                new_folderName = folderName;
            }
            try
            {
                if (Directory.Exists(Path.Combine(comedir, folderName)))
                {
                    string[] files = Directory.GetFiles(Path.Combine(comedir, folderName));
                    Directory.CreateDirectory(Path.Combine(todir, folderName));
                    foreach (string file in files)
                    {
                        DataCopy(Path.GetFileName(file), Path.Combine(comedir, folderName), Path.Combine(todir, folderName));
                    }
                    //這裡的沒有向zip類中寫的父目錄不斷更改,看看是否好使
                    string[] dirs = Directory.GetDirectories(Path.Combine(comedir, folderName));
                    foreach (string dir in dirs)
                    {
                        if (!FolderCopy(Path.GetFileName(dir), Path.Combine(comedir, folderName), Path.Combine(todir, folderName)))
                        {
                            return false;
                        }
                    }
                    ret = true;
                }
            }
            catch (Exception e)
            {
                throw e;
            }
            return ret;
        }
        /// <summary>
        /// 刪除檔案和檔案夾(外部存取)
        /// </summary>
        /// <param name="list"></param>
        /// <param name="dir"></param>
        /// <returns></returns>
        public bool DelFiles(List<DealFiles> list, string dir)
        {
            bool ret =

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.