- 热门文章:
- · ASP导出Excel数据的四种方法(2)
- · ASP.NET应用程序设计的10大技巧(1)
- · ASP.NET应用程序设计的10大技巧(2)
- · ASP.NET应用程序设计的10大技巧(4)
- · ASP.NET结合COM组件发送Email
- · ASP.NET中Cookie编程简明参考
- · 剖析ASP.NET2.0站点导航功能之建立导航(1)
- · 剖析ASP.NET2.0站点导航功能之建立导航(2)
- · ASP.NET入门随想之金庸群“粒”传(1)
- · ASP.NET入门随想之金庸群“粒”传(2)
- · ASP.NET Web Matrix开发工具简介(1)
- · ASP.NET中自定义DataGrid分页设置的实现
上一篇:ASP.NET+XML打造网络硬盘(1) >>
ASP.NET+XML打造网络硬盘 (3)
对文件的操作包括"下载"和"删除"两种,在上面列表显示指定文件夹中内容时,针对文件,有这样的语句:
dr[2]="<a href="+url+" target=_blank"+">下载</a>";//建立联接地址
其中,url是指定文件对应的服务器路径。 通过这样的链接将文件定位到服务器上的对应位置。视文件格式的不同,客户端可以下载文件到本机上,也可以就在服务器上打开它。
删除文件很简单,.net的IO命名空间的File类库有这样的方法:
File.Delete(string filename);其中,filename为文件的完整路径
你需要注意的是,文件的删除将不需要验证,要防止文件被删除,你需要依照下面的方式来进行。(当然,程序中为避免文件误删除提供了确认验证,文件夹删除也一样!)
对文件夹的操作分为:进入或者删除。如果文件夹在创建时被设置"进入受限"或者"删除受限",用户在执行这样的操作时将被要求密码验证,只有通过验证才能完成相应的操作,这种方式保护了你的文件被非法访问或删除。
相对文件的删除,文件夹的删除程序要稍微复杂些,.Net的Directory类库提供的方法Delete()只能删除空文件夹,这就需要我们首先清空文件夹中内容,然后才能完成这一操作,由于文件夹中还可能再包含有文件夹,我们通过递归调用来实现这一操作:
//删除文件夹的方法
public void DeleteFolder(string dir)
{
foreach(string d in Directory.GetFileSystemEntries(dir))
{
if(File.Exists(d))
File.Delete(d);//直接删除其中的文件
else
DeleteFolder(d);//递归删除子文件夹
}
Directory.Delete(dir);//删除已空文件夹
}
其中,参数dir是待删除文件夹的完整路径。程序使用循环语句,查找文件夹中的内容,是文件则直接删除,如果是文件夹,则递归调用方法自身来删除子文件夹,文件夹清空后再完成删除操作。
4、文件上传:
要实现网络硬盘的功能,必须要有可供操作的文件,这些文件来自于客户端的上传(当然,服务器端也能提供这些文件,但这不是网络硬盘的重点),过去我们实现文件的上传,在ASP中通常是使用第一些文件上传组件,比如Microsoft 的PostingAcceptor组件,另外还有第三方提供的一些付费组件(不过说真的,这些组件并不好用)。那时候想要自己开发这样的文件上传组件,相当繁琐;而现在,.Net提供的类库HttpPostedFile和HttpFilesCollection可以很容易地访问上载到服务器的文件,同时使开发人员控制文件上载过程。其中的HttpPostedFile类封装已经上传到服务器的文件对象,其方法和属性提供对每个文件的内容和属性的访问;HttpFileCollection类则为多个HttpPostedFile对象提供一个容器,用作保存上传给服务器的数据结构的类,这样你就可以利用被传送的文件集合,该文件集合可通过其Files属性从HttpRequest 对象访问,一旦服务器接收了请求的整个内容,该集合就可以访问。这些内置的组件使得ASP.NET中实现文件上传相当容易,甚至只需要几行代码就可以了!关于Asp.net中实现文件上传的文章很多,这里不做专门的阐述,需要的话你可以参考那些文章,这里,只提示你需要注意以下几点:
1)、客户端表单的编码类型Enctype 设置为multipart/form-data的MIME格式,提交表单使用Http的post方法,象下面这样:
<form id="form1" method="post" enctype="multipart/form-data/form-data"
runat="server" >
2)、HttpInputFile控件运行在服务器端,设置runat=server,type=file ,象下面这样:
<INPUT id="fileUp" type="file" size="6" runat="server">
3)、要上传多个文件,你可以布置多个HttpInputFile控件,然后使用HttpRequest.Files来获取这些文件。
5、环境配置文件Web.config的处理:
在中文状态下,你可能需要将全球化设置编码由默认的"Utf-8"改为"gb2312",语句如下:
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
同时,Web.config默认设置的的文件大小限制可能并不能满足你的需要,你或许需要将限制尺度放大一些。这通过修改参数maxRequestLength的值来实现,如下所示:
<!-- 设置可接受的最大字节数 -->
<httpRuntime maxRequestLength="500000">
</httpRuntime>
6、随时跟踪"当前路径"值:
程序中的另一个关键点是关于"当前路径"的,由于你总是需要在不同的文件夹之间跳转:点击"进入"到达下一级文件夹,点击"上一级文件夹"返回前一级文件夹;而所有这些文件夹的内容都通过同一个页面(Default.aspx)来显示,这个显示页面被设置为始终显示当前文件夹下内容。在你传送查询字符串来调用它时,你需要在查询字符串中包含当前路径的完整表示,这在程序中通过设置一个静态变量来实现:public static string currFullPath=""; 当前路径发生改变时,总是将这个路径值传送给这个静态标量:
currFullPath=Request["path"];这就使得这个静态变量始终存储着当前的路径值,以这个静态变量为查询字符串调用显示页: Response.Redirect("Default.aspx?path="+currFullPath)就总能显示当前文件夹下的内容了!
参考资料:
《Asp.net程序员参考手册》、《XML高级编程》、《C#高级编程》、微软MSDN
运行环境:
程序在:Windows XP中文正式版、.Net Frameworks 正式版、Visual Studio.Net中文正式版下调试通过,在局域网(总部+多个异地子公司模式)上稳定运行
下一篇:ASP导出Excel数据的四种方法(2) >>
相关文章:
- · 从SQL Server数据库提取图片并显示在DataGrid(2)
- · 利用HtmlGenericControl类,动态改变Title文字
- · ASP.NET中DataGrid控件应用技巧简述(1)
- · ASP.Net+XML打造留言薄(1)
- · 关于生成目录树结构的类(2)
- · 用VS2005开发ASP.NET 2.0数据库程序(1)
- · 用VS2005开发ASP.NET 2.0数据库程序(2)
- · 抢先试用ASP.NET 2.0中的新型安全控件(1)
- · 抢先试用ASP.NET 2.0中的新型安全控件(2)
- · 抢先试用ASP.NET 2.0中的新型安全控件(3)
- · 抢先试用ASP.NET 2.0中的新型安全控件(4)
- · 抢先试用ASP.NET 2.0中的新型安全控件(5)
- · 利用WWF进行ASP.NET程序开发(1)
- · 利用WWF进行ASP.NET程序开发(2)
- · 利用WWF进行ASP.NET程序开发(3)
- · 用ASP实现开关IIS不重启电脑
- · 在ASP中优化数据库处理
- · 用InStr函数实现代码减肥
- · vbscript和javascript互相调用方法
- · ASP页面内VBScript和JScript的交互
- · 在ASP中优化数据库处理
- · 关于Adodb.Stream 的使用说明
- · ASP.NET中实现DataGrid数据排序(1)
- · ASP.NET中实现DataGrid数据排序(2)
- · ASP.NET中实现DataGrid数据排序(3)
- · ASP.NET中实现DataGrid数据排序(4)
- · 利用RowFilter属性,将一个DataSet绑定到两个DataGrid
- · 将ASP生成的内容写入响应流中最有效的方法是什么?(1)
- · 将ASP生成的内容写入响应流中最有效的方法是什么(2)?
- · 在asp中调用jsp
- · 用户状态维护
- · 用ASP创建多栏选项列表
- · 用ASP创建多栏选项列表(2)
- · ASP3.0中的流控制能力
- · 浅析数据完整性问题
- · 在ASP中改善动态分页的性能
- · 在你的ASP中使用类(class)
- · 一个在vbscript中读取cookie的程序函数
