[置顶] Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

时间:2023-01-13 14:51:18

Ext.NET学习笔记之3(简单的WEB文件管理器DEMO

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

1       需求分析

目的:通过WEB页面实现一个简单的文件管理器,可以使用浏览器来管理服务器上所有磁盘下的文件和目录。

需要实现:文件和目录遍历;文件和目录的删除(单选、多选)、改名;目录的建立;文件的上传下载,所有目录和文件对应图标的获取以及如何在WEB界面上显示 

源代码工程文件在此下载:http://download.csdn.net/detail/coldwind811201/4960026 

开发环境:WIN7 64位 Visual Studio 2010

DotNet:4.0

Ext.NET Pro:2.0.0

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

 

2       基本界面(任何的兼容浏览器中的界面)

 [置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

[置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

[置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

[置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

这样的一个东西如果是在WINFORM下编程是非常容易的,拖入几个内置的控件就可以实现了,但如果是想要在浏览器中实现,这对于不精通WEB页面设计的程序员来说是非常难的,但有了Ext.NET这样一组Webform组件,实现起来就同样变得非常容易了。

 

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

 

3       Demo里实现和未实现的功能

3.1     Demo中展示的内容

前台代码所演示的:

1、  GridPanel的数据加载和表现方式

2、  GridPanel中的行双击控制

3、  GridPanel中的数据项使用首列CheckBox多选方式

4、  GridPanel中顶部工具条内按钮的可用性控制(根据选择内容禁用或启用)和使用方式

两种执行代码的方法:<DirectEvents><Listeners>

<DirectEvents>直接执行后台代码

<Listeners>直接执行的是客户端脚本,不影响服务器性能

但两都又可以互通:

执行完<DirectEvents>的后台代码,可以传递到前台脚本:在后台增加X.AddScript

执行完<Listeners>中的客户端脚本也可以直接运行后台代码:后台的函数直接写成:

[DirectMethod(Namespace = "命名空间")]

       public void函数名()

前台通过JS代码命名空间.函数名()的方式调用

5、  工具条内按钮执行后台代码前如何获得前台的输入:

删除时的确认;改名时默认设置原来的名称,获取新的名称

6、  FileUploadField的使用,仅用一个按钮实现选择文件并直接上传

 

后台代码所演示的:

1、  GridPanel中某一列如何同时显示图标和文字,并保持两者对齐

使用一个表格形式的HTML语言<table><tr><td></td><td></td></tr></table>,在其中加入图片和文字

2、  如何动态获取服务器上驱动器、文件夹、文件类别对应的图标并通过浏览器显示

动态获取对应的ICON格式图片,在服务器端保存到特定目录下,并在GridPanel项中引用

3、  获取GridPanel中多选的数据项的方法

4、  如何获得目录及文件信息,对于HiddenSystem属性的文件、文件夹进行隐藏

5、  删除、改名文件和文件夹,新建文件夹

6、  上传和下载文件

 

具体的实现方法请直接看源代码,代码中已经非常详细的注释了。

 

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

 

3.2     Demo中没有实现的功能和缺陷

没有实现的功能:

1、  树结构的目录组织方式

2、  外链功能

3、  权限的管理

 

功能上的缺陷:

1、  文件上传时的进度条是伪进度条,不能取消,也没有详细的百分比和速率显示,只有在浏览器的进度条里可以看到上传了多少

2、  文件上传只可单选,没有实现多选

3、  文件只有到上传后才会判断是否有重名文件(会导致大文件白传了)

4、  如果文件夹没有权限打开,会出错

 

关于12条缺陷,可以使用SWFUpload来实现。请参看如下链接:http://www.cnblogs.com/goga21cn/archive/2011/12/02/ExtNetExample_3_SWFUpload.html

 

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

 

4       特别注意的几点

4.1     服务器可接收的文件大小控制

[置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)中除了按照Ext.NET要求的标准配置以外,需要在system.web段中增加如下参数。

[置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

才能上传比较大的文件

 

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

 

4.2     使用Ext.NET并单独使用下载文件函数的出错情况

如果单独使用下载文件的函数,又使用了Ext.NETResourceManager,必须要在前台页面上放置一个FileUploadField组件。不然会出现Request Failure错误,如下图展示的:

 [置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201

 

5       本例的扩展

可以用于网盘的实现:增加数据库的功能;增加用户登录,每一个用户都新建一个目录,并定位到这个特定的目录,控制用户可以返回的上一层目录的层数;增加外链功能,给非本人下载文件。

需要注意的是:如果使用的目录不是服务器上的本地目录,而是通过映射或者其他计算机上的共享目录,是不能够通过System.IO中的DirectoryInfoFileInfo直接访问的。必须在项目中添加新建全局应用程序类Global.asax,如下图:

[置顶]        Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)

并且在其中的Application_Start中使用System.Diagnostics.Process.Start("net.exe", "use映射盘符: \"\\\\服务器地址\\共享目录\" \"连接密码\" /user:\"连接用户名\"");这种方式来获得对映射的驱动器才能够访问,不然会出现无法找到目录的错误。

 

(转载请保留,欢迎光临我的CSDN BLOGhttp://blog.csdn.net/coldwind811201