Ext.NET学习笔记之3(简单的WEB文件管理器DEMO)
(转载请保留,欢迎光临我的CSDN BLOG:http://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 BLOG:http://blog.csdn.net/coldwind811201)
2 基本界面(任何的兼容浏览器中的界面)
这样的一个东西如果是在WINFORM下编程是非常容易的,拖入几个内置的控件就可以实现了,但如果是想要在浏览器中实现,这对于不精通WEB页面设计的程序员来说是非常难的,但有了Ext.NET这样一组Webform组件,实现起来就同样变得非常容易了。
(转载请保留,欢迎光临我的CSDN BLOG:http://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、 如何获得目录及文件信息,对于Hidden和System属性的文件、文件夹进行隐藏
5、 删除、改名文件和文件夹,新建文件夹
6、 上传和下载文件
具体的实现方法请直接看源代码,代码中已经非常详细的注释了。
(转载请保留,欢迎光临我的CSDN BLOG:http://blog.csdn.net/coldwind811201)
3.2 Demo中没有实现的功能和缺陷
没有实现的功能:
1、 树结构的目录组织方式
2、 外链功能
3、 权限的管理
功能上的缺陷:
1、 文件上传时的进度条是伪进度条,不能取消,也没有详细的百分比和速率显示,只有在浏览器的进度条里可以看到上传了多少
2、 文件上传只可单选,没有实现多选
3、 文件只有到上传后才会判断是否有重名文件(会导致大文件白传了)
4、 如果文件夹没有权限打开,会出错
关于1、2条缺陷,可以使用SWFUpload来实现。请参看如下链接:http://www.cnblogs.com/goga21cn/archive/2011/12/02/ExtNetExample_3_SWFUpload.html
(转载请保留,欢迎光临我的CSDN BLOG:http://blog.csdn.net/coldwind811201)
4 特别注意的几点
4.1 服务器可接收的文件大小控制
中除了按照Ext.NET要求的标准配置以外,需要在system.web段中增加如下参数。
才能上传比较大的文件
(转载请保留,欢迎光临我的CSDN BLOG:http://blog.csdn.net/coldwind811201)
4.2 使用Ext.NET并单独使用下载文件函数的出错情况
如果单独使用下载文件的函数,又使用了Ext.NET的ResourceManager,必须要在前台页面上放置一个FileUploadField组件。不然会出现Request Failure错误,如下图展示的:
(转载请保留,欢迎光临我的CSDN BLOG:http://blog.csdn.net/coldwind811201)
5 本例的扩展
可以用于网盘的实现:增加数据库的功能;增加用户登录,每一个用户都新建一个目录,并定位到这个特定的目录,控制用户可以返回的上一层目录的层数;增加外链功能,给非本人下载文件。
需要注意的是:如果使用的目录不是服务器上的本地目录,而是通过映射或者其他计算机上的共享目录,是不能够通过System.IO中的DirectoryInfo和FileInfo直接访问的。必须在项目中添加新建全局应用程序类Global.asax,如下图:
并且在其中的Application_Start中使用System.Diagnostics.Process.Start("net.exe", "use映射盘符: \"\\\\服务器地址\\共享目录\" \"连接密码\" /user:\"连接用户名\"");这种方式来获得对映射的驱动器才能够访问,不然会出现无法找到目录的错误。
(转载请保留,欢迎光临我的CSDN BLOG:http://blog.csdn.net/coldwind811201)