《WebSite服务器控件.ppt》由会员分享,可在线阅读,更多相关《WebSite服务器控件.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、WebSiteWebSite效劳器控件效劳器控件效劳器控件效劳器控件12021/2/21效劳器控件效劳器控件22021/2/21网络文件夹的例子网络文件夹的例子网络文件夹的界面网络文件夹的界面初始界面初始界面上传限制界面上传限制界面上传文件界面上传文件界面管理文件界面管理文件界面3网络文件夹的功能需求网络文件夹的功能需求1.在文件中定义文件上传途径、上传类型限制、总文件在文件中定义文件上传途径、上传类型限制、总文件夹容量限制、单个文件大小限制等参数。夹容量限制、单个文件大小限制等参数。2.四个界面通过四个界面通过MultiView进展切换,页面顶部下拉进展切换,页面顶部下拉列表框提供列表框提供
2、4个界面的切换。个界面的切换。3.文件类型限制使用文件类型限制使用BulletedLisst控件呈现,其它数控件呈现,其它数据使用据使用Lable控件呈现。控件呈现。4.对没有选择上传文件、上传文件的类型不匹配、大小对没有选择上传文件、上传文件的类型不匹配、大小超过单个文件限制、大小超过文件夹可用容量、上传成超过单个文件限制、大小超过文件夹可用容量、上传成功等情况都使用客户端警告框给予提示。功等情况都使用客户端警告框给予提示。4网络文件夹的功能需求网络文件夹的功能需求5.管理文件界面中使用管理文件界面中使用ListBox列出目录中所有文件,列出目录中所有文件,单击任何一项都自动在右边给出文件详
3、细信息,并且把单击任何一项都自动在右边给出文件详细信息,并且把文件名输入到文件名输入到“对文件重命名按钮前的文本框中。对文件重命名按钮前的文本框中。6.管理文件界面实现文件的删除、重命名和下载操作。管理文件界面实现文件的删除、重命名和下载操作。删除和改名操作在成功后使用客户端警告框给予提示。删除和改名操作在成功后使用客户端警告框给予提示。7.任何界面上的所有文字都使用款式表固定为任何界面上的所有文字都使用款式表固定为10pt的的黑色宋体。黑色宋体。5代码实现代码实现-Config文件文件文件中定义文件上传途径、上传类型限制、总文件夹容文件中定义文件上传途径、上传类型限制、总文件夹容量限制、单个
4、文件大小限制等参数量限制、单个文件大小限制等参数文件上传途径文件上传途径上传类型限制上传类型限制单个文件大小限制单个文件大小限制总文件夹容量限制总文件夹容量限制6字体款式字体款式网网络络文件文件夹夹/*给给body、input和和select元素同元素同时应时应用用css*/body,input,selectfont-family:宋体宋体;font-size:10pt;font-weight:normal;color:#000000;7界面一界面一:初始界面设置:初始界面设置控件控件ID功能功能下拉列表下拉列表ddl_FunctionList界面切换界面切换标签标签lab_FolderInf
5、o显示文件夹容量,已用空间显示文件夹容量,已用空间选项卡选项卡mvFolder包包含含三三个个view控控件件,用用来来显显示示上上传传限限制制界界面面,上上传传文文件件界界面面和和管理文件界面管理文件界面选择选择功能功能上上传传限制限制上上传传文件文件管理文件管理文件 8界面二:上传限制页面设置界面二:上传限制页面设置控件控件ID功能功能Viewview_Configure选项卡选项卡BulletedListbl_显示文件类型限制列表显示文件类型限制列表Lablelab_显示允许上传单个文件的大小显示允许上传单个文件的大小允允许许上上传传文件的文件的类类型:型:允允许许上上传单传单
6、个文件的大小:个文件的大小:9界面三:上传文件页面设置界面三:上传文件页面设置控件控件ID功能功能Viewview_Upload选项卡选项卡文件上传控件文件上传控件Buttonbtn_Upload上传文件上传文件属性属性Text=“上传文件上传文件”10界面四:管理文件页面设置界面四:管理文件页面设置控件控件ID功能功能Viewview_Manage选项卡选项卡ListBoxlb_列出目录中所有文件列出目录中所有文件Labellab_显显示示列列表表框框中中选选的的文文件件的的详详细信息细信息Buttonbtn_Download属性属性Text=“下载文件下载文件”Buttonbtn_Dele
7、te属性属性Text=“删除文件删除文件”TextBoxtb_显显示示并并修修改改列列表表框框中中选选定定的的文件名文件名Buttonbtn_Rename属性属性Text=对文件重命名对文件重命名 在客户端在客户端OnClick上执上执行的客户端脚本行的客户端脚本confirm是是javascript语言中的一个语言中的一个方法,可以弹出一个包含方法,可以弹出一个包含确定确定与与取取消消的对话方块的对话方块.用法用法:confirm(msg),msg是提示信是提示信息息。假如用户按下了确定。假如用户按下了确定,返回返回true;或或者按下了取消者按下了取消,返回返回false11后台
8、代码后台代码-页面初始化页面初始化在执行页面的在执行页面的Page_Load方法时,对页面上的控件方法时,对页面上的控件显示内容进展设置显示内容进展设置if(!IsPostBack)/初始化文件初始化文件夹夹信息信息InitFolderInfo();/初始化上初始化上传传限制信息限制信息InitUploadLimit();/初始化文件列表初始化文件列表Init();是是Page的一个属性,表示页面是否已经回发,的一个属性,表示页面是否已经回发,常用来判断页面是否第一次加载。常用来判断页面是否第一次加载。IsPostBack=true,说明页面已经回传。,说明页面已经回传。IsPostBack!
9、=true,说明页面第一次加载。,说明页面第一次加载。12初始化文件夹信息初始化文件夹信息privatevoidInitFolderInfo()/从从config中读取文件上传途径中读取文件上传途径stringstr=ConfigurationManager.AppSettings.ToString();/判断上传文件夹是否存在判断上传文件夹是否存在if(!Directory.Exists(Server.MapPath(str)Directory.CreateDirectory(Server.MapPath(str);/组合成物理途径组合成物理途径stringstr=Server.MapPat
10、h(str);/从从config中读取文件夹容量限制中读取文件夹容量限制doubleiFolderSizeLimit=Convert.ToInt32(ConfigurationManager.AppSettingsFolderSizeLimit);返回与返回与Web效劳器上指定虚拟途径效劳器上指定虚拟途径相对应的物理途径相对应的物理途径须引入命名空间须引入命名空间13初始化文件夹信息初始化文件夹信息/声明表示文件声明表示文件夹夹已用空已用空间间的的变变量量doubleiFolderCurrentSize=0;/获获取文件取文件夹夹中所有文件中所有文件arrFiles=newDirectoryI
11、nfo(str).GetFiles();/累加文件大小累加文件大小获获得已用空得已用空间值间值foreach(fiinarrFiles)iFolderCurrentSize+=Convert.ToInt32(fi.Length/1024);/把文件把文件夹夹容量和已用空容量和已用空间间信息信息赋值给标签赋值给标签lab_FolderInfo.Text=string.Format(文件文件夹夹容量限制:容量限制:0M已用空已用空间间:1:f2M,iFolderSizeLimit/1024,iFolderCurrentSize/1024);返回指定目录的文件列表返回指定目录的文件列表14File类
12、和类的区别类和类的区别 File类:提供用于创立、复制、删除、挪动和翻开文件类:提供用于创立、复制、删除、挪动和翻开文件的静态方法,并协助创立的静态方法,并协助创立对象。对象。类:提供创立、复制、删除、挪动和翻开文件的实例类:提供创立、复制、删除、挪动和翻开文件的实例方法,并且帮助创立方法,并且帮助创立对象。无法继承此类。对象。无法继承此类。两者的共同点:两者的共同点:都用于典型的操作,如复制、挪动、重命名、创立、都用于典型的操作,如复制、挪动、重命名、创立、翻开、删除和追加到文件翻开、删除和追加到文件默认情况下,将向所有用户授予对新文件的完全读默认情况下,将向所有用户授予对新文件的完全读/写
13、写访问权限。访问权限。aFile=new(Data.txt);if(a)Console.WriteLine();if(Data.txt)Console.WriteLine();15File类和类的区别类和类的区别 两者的区别:两者的区别:File类是静态类,由于所有的类是静态类,由于所有的File方法都是静态的,所方法都是静态的,所以假如只想执行一个操作,那么使用以假如只想执行一个操作,那么使用File方法的效率比方法的效率比使用相应的使用相应的实例方法可能更高。实例方法可能更高。所有的所有的File方法都要求当前所操作的文件的途径。方法都要求当前所操作的文件的途径。File类的静态方法对所有
14、方法都执行平安检查。假如类的静态方法对所有方法都执行平安检查。假如打算屡次重用某个对象,可考虑改用的相应实例方法,打算屡次重用某个对象,可考虑改用的相应实例方法,因为并不总是需要平安检查。因为并不总是需要平安检查。16Directory和和DirectoryInfo的区别的区别Directory类和类和DirectoryInfo类都是类都是C#提供的用于操作提供的用于操作文件夹的类,文件夹的类,Directory类和类和File一样,所有的方法都一样,所有的方法都是静态的。而是静态的。而DirectoryInfo类是实例类。类是实例类。选择选择Directory类还是类还是DirectoryI
15、nfo类的规那么与类的规那么与File和的规那么一样:和的规那么一样:假如只执行一个操作,选择假如只执行一个操作,选择DirectoryInfo类,类,Directory类的静态方法对所有方法执行平安检查。类的静态方法对所有方法执行平安检查。假如执行屡次操作,那么选择假如执行屡次操作,那么选择DirectoryInfo类的相应类的相应实例方法,因为平安检查并不总是必要的。实例方法,因为平安检查并不总是必要的。17初始化上初始化上传传限制信息限制信息初始化文件类型限制列表初始化文件类型限制列表把文件大小限制信息赋值给标签把文件大小限制信息赋值给标签privatevoidInitUploadLim
16、it()/从从config中读取上传文件类型限制并根据逗号分割成字符串数组中读取上传文件类型限制并根据逗号分割成字符串数组stringarr=ConfigurationManager.AppSettings.ToString().Split(,);/从从config中读取上传文件大小限制中读取上传文件大小限制doublei=Convert.ToInt32(ConfigurationManager.AppSettings);/遍历字符串数组把所有项参加工程编号控件遍历字符串数组把所有项参加工程编号控件for(inti=0;i-1)returntrue;elsereturnfalse;获取文件扩展
17、名获取文件扩展名21自定自定义义方法判断文件大小是否符合要求方法判断文件大小是否符合要求 privateboolIsAllowable()/从从config中中读读取上取上传传文件大小限制文件大小限制doublei=Convert.ToInt32(ConfigurationManager.AppSettings)*1024;/文件大小是否超出了大小限制?文件大小是否超出了大小限制?if(i)returntrue;elsereturnfalse;22自定自定义义方法方法显显示提示示提示 privatevoidShowMessageBox(stringstrMessaage)ClientScrip
18、t.RegisterStartupScript(this.GetType(),string.Format(alert(0),strMessaage);在表单完毕的地方注册脚本在表单完毕的地方注册脚本23在客户端注册脚本在客户端注册脚本一般来说,向客户端注册脚本有三种方法:一般来说,向客户端注册脚本有三种方法:使用使用Literal控件在页面任意位置注册脚本控件在页面任意位置注册脚本使用使用Response.Write()在页面顶部注册脚本,可能在页面顶部注册脚本,可能出现破坏网页出现破坏网页css的效果,让的效果,让css失去效果失去效果使用使用ClientScript.RegisterCli
19、entScriptBlock()将将 JavaScript 嵌入到页面中开启元素嵌入到页面中开启元素 的的紧后面。紧后面。ClientScript.RegisterStartupScript()将将 JavaScript 嵌入到嵌入到 ASP.NET 页面的底部,恰好位页面的底部,恰好位于关闭元素于关闭元素 的前面的前面24例如例如观察语句执行顺序和源文件观察语句执行顺序和源文件 protectedvoidPage_Load(objectsender,EventArgse)Response.Write(alert(使用使用Response.Write(););ClientScript.Regi
20、sterClientScriptBlock(Page.GetType(),alert(使用使用ClientScript.RegisterClientScriptBlock(););ClientScript.RegisterStartupScript(Page.GetType(),alert(使用使用ClientScript.RegisterStartupScript(););Literal1.Text+=alert(使用使用Literal控件控件);25RegisterClientScriptBlock和和RegisterStartupScript之间之间的区别的区别在页面加载到阅读器时,将焦
21、点置于该页面上的在页面加载到阅读器时,将焦点置于该页面上的一个文本框中的方法一个文本框中的方法 protectedvoidPage_Load(objectsender,EventArgse)ClientScript.RegisterStartupScript(Page.GetType(),document.forms0TextBox1.focus();,true);由于在阅读器运行到页面底部并执行此小段由于在阅读器运行到页面底部并执行此小段 JavaScript 时,就已生成了页面上的文本框,并已将时,就已生成了页面上的文本框,并已将其放到了页面中,因此,此方法运行正常。其放到了页面中,因此,
22、此方法运行正常。假如改成RegisterClientScriptBlock方法,文本框控件将不会获得焦点,且会在页面上生成一个 JavaScript 错误,出错的原因在于,阅读器将先遇到 JavaScript,而后文本框才会出如今页面中。因此,JavaScript 将无法找到 TextBox1。26上传文件上传文件上传文件时,要判断文件类型是否符合要求,文件大小上传文件时,要判断文件类型是否符合要求,文件大小是否符合要求。是否符合要求。protectedvoidbtn_Upload_Click(objectsender,EventArgse)/判断用户是否选择了文件判断用户是否选择了文件if(
23、)/调用自定义方法判断文件类型是否符合要求调用自定义方法判断文件类型是否符合要求if(IsAllowable()/调用自定义方法判断文件大小是否符合要求调用自定义方法判断文件大小是否符合要求if(IsAllowable()/从从config中读取文件上传途径中读取文件上传途径stringstr=ConfigurationManager.AppSettings.ToString();/从从UploadFile中读取文件名中读取文件名stringstr=;/组合成物理途径组合成物理途径stringstr=Server.MapPath(str+str);27上传文件上传文件/保存文件保存文件(str
24、);/更新文件列表框控件更新文件列表框控件lb_(str);/更新文件更新文件夹夹信息信息InitFolderInfo();/调调用自定用自定义义方法方法显显示提示示提示ShowMessageBox(文件成功上文件成功上传传);else/调调用自定用自定义义方法方法显显示提示示提示ShowMessageBox(文件大小不符合要求,文件大小不符合要求,请请参看上参看上传传限制限制);else/调调用自定用自定义义方法方法显显示提示示提示ShowMessageBox(文件文件类类型不符合要求,型不符合要求,请请参看上参看上传传限制限制);else/调调用自定用自定义义方法方法显显示提示示提示Sho
25、wMessageBox(请选择请选择一个文件一个文件);28显示选定的文件详细信息显示选定的文件详细信息protectedvoidlb_(objectsender,EventArgse)/从从config中读取文件上传途径中读取文件上传途径stringstr=ConfigurationManager.AppSettings.ToString();/从列表框控件中读取选择的文件名从列表框控件中读取选择的文件名stringstr=lb_;/组合成物理途径组合成物理途径stringstr=Server.MapPath(str+str);/根据物理途径实例化文件信息类根据物理途径实例化文件信息类fi=
26、new(str);/获得文件大小和创立时间并赋值给标签获得文件大小和创立时间并赋值给标签lab_=string.Format(文件大小:文件大小:0字节字节上传时间:上传时间:1,fi.Length,fi.CreationTime);/把文件名赋值给重命名文本框把文件名赋值给重命名文本框tb_=str;29下载文件下载文件定义定义“下载文件按钮的下载文件按钮的Click事件事件使用方法下载文件。使用方法下载文件。30补充:补充:HttpRequest对象对象阅读器在恳求效劳器某地址的时候会将客户端的信阅读器在恳求效劳器某地址的时候会将客户端的信息发送到效劳器。在中运行时把这些客户端的恳求息发送
27、到效劳器。在中运行时把这些客户端的恳求信息封装成信息封装成HttpRequest对象。对象。HttpRequest主要有以下成员。主要有以下成员。成员名称成员名称功能功能Browser属性属性获取发起请求的浏览器的功能信息。获取发起请求的浏览器的功能信息。Request.Browser.Type浏览器类型浏览器类型Request.Browser.Version浏览器版本浏览器版本Rwquest.Browser.Cookies浏览器是浏览器是否支持否支持CookiesCookies属性属性获取客户端发送的获取客户端发送的Cookie的集合的集合Form和和 QueryString属性属性Url属
28、性属性获取当前请求的获取当前请求的URL的信息的信息UrlReferrer属性属性获取有关客户端上次请求的获取有关客户端上次请求的URL的信息的信息UserLanguages属性属性获取客户端语言首选项的排序字符串数组获取客户端语言首选项的排序字符串数组MapPath()方法方法为为当当前前请请求求的的URL中中的的虚虚拟拟路路径径映映射射到到服服务务器上的物理路径器上的物理路径31补充:补充:HttpResponse对象对象HttpResponse对象封装了一系列的方法和属性用对象封装了一系列的方法和属性用于操作于操作HTTP响应的信息。响应的信息。成员名称成员名称功能功能ContentTy
29、pe属性属性获取或设置输出流的获取或设置输出流的HTTPMIME类型。类型。当希望向客户端输出非当希望向客户端输出非HTML文件(如图文件(如图片,片,XML等),就可以设置等),就可以设置ContentType属性为相应的属性为相应的HTTP MIME类型。类型。AddHeader()方法方法将将一一个个HTTP头头添添加加到到输输出出流流。比比如如下下载载文文件件时时,要要在在HTTP头头中中加加入入文文件件名名等等信信息。息。BinaryWrite()方法方法将一个二进制字符串写入将一个二进制字符串写入HTTP输出流。输出流。Write()方法方法将信息写入将信息写入HTTP响应输出流。
30、响应输出流。WriteFile()方法方法将指定的文件直接写入将指定的文件直接写入HTTP响应输出流。响应输出流。End()方法方法当当前前所所有有缓缓冲冲的的输输出出发发送送到到客客户户端端,停停止止该页的执行。该页的执行。32例如:访问记录程序例如:访问记录程序创立页面创立页面然后创立页面,在页面上添加一个链接,跳转然后创立页面,在页面上添加一个链接,跳转到页面到页面protectedvoidPage_Load(objectsender,EventArgse)stringUrlReferrer,Url,IP,Browser,OS,Language;/获取来源页面获取来源页面UrlRefer
31、rer=Request.UrlReferrer=null?:Request.UrlReferrer.ToString();/获取被恳求页面获取被恳求页面Url=Request.Url.ToString();/获取恳求的主机获取恳求的主机IPIP=Request.UserHostAddress;/获取客户端的阅读器类型和版本获取客户端的阅读器类型和版本Browser=Request.Browser.Browser+Request.Browser.Version;/获取客户端操作系统获取客户端操作系统OS=Request.Browser.Platform;/获取客户端首选语言获取客户端首选语言La
32、nguage=Request.UserLanguages0;/输出恳求的信息输出恳求的信息Response.Write(string.Format(来源页面:来源页面:0被恳求页面:被恳求页面:1恳求恳求的主机的主机IP:2客户端的阅读器类型和版本:客户端的阅读器类型和版本:3客户端的分辨率值:客户端的分辨率值:4客户端首选语言:客户端首选语言:5,UrlReferrer,Url,IP,Browser,OS,Language);33例如:文件下载程序例如:文件下载程序在网站工程文件夹中放一个大小为在网站工程文件夹中放一个大小为20M左右的左右的rar文件。文件。然后新建一个页面然后新建一个页面
33、Download,在页面上放两个按钮。,在页面上放两个按钮。Button1使用使用BinaryWrite()输出文件。输出文件。Button2使用使用WriteFile()输出文件。输出文件。protectedvoidButton1_Click(objectsender,EventArgse)string=test.rar;/清空输出流清空输出流Response.Clear();/在在HTTP头中参加文件名信息头中参加文件名信息Response.AddHeader(Content-Disposition,attachment;+);/定义输出流定义输出流MIME类型为类型为Response.C
34、ontentType=application/x-rar;/从磁盘读取文件流从磁盘读取文件流System.IO.fs=System.IO.(Server.MapPath();/定义缓冲区大小定义缓冲区大小bytebuffer=newbyte102400;/第一次读取第一次读取inti=fs.Read(buffer,0,buffer.Length);/假如读取的字节大于假如读取的字节大于0那么使用那么使用BinaryWrite()不断向客户端输出文件流不断向客户端输出文件流while(i0)Response.BinaryWrite(buffer);i=fs.Read(buffer,0,buffe
35、r.Length);/关闭磁盘文件流关闭磁盘文件流fs.Close();/关闭输出流关闭输出流Response.End();是是MIME协议的扩展,协议的扩展,MIME协议指示协议指示MIME用户代理如何显示用户代理如何显示附加的文件。当附加的文件。当IE承受到头时,它会激活文件下载对话框,它承受到头时,它会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名的文件名框自动填充了头中指定的文件名 protectedvoidButton2_Click(objectsender,EventArgse)string=test.rar;Response.Clear();Response.AddH
36、eader(Content-Disposition,attachment;+);Response.ContentType=application/x-rar;/直接使用直接使用WriteFile()输输出整个文件的流出整个文件的流Response.Write();Response.End();34下载文件下载文件定义定义“下载文件按钮的下载文件按钮的Click事件事件protectedvoidbtn_Download_Click(objectsender,EventArgse)/从从config中读取文件上传途径中读取文件上传途径stringstr=ConfigurationManager.A
37、ppSettings.ToString();/从列表框控件中读取选择的文件名从列表框控件中读取选择的文件名stringstr=lb_;/组合成物理途径组合成物理途径stringstr=Server.MapPath(str+str);Response.Clear();Response.ContentType=application/octet-stream;Response.AddHeader(Content-Disposition,attachment;+HttpUtility.UrlEncode(str,System.Text.Encoding.UTF8);Response.Write);R
38、esponse.End();去除缓冲区去除缓冲区设置输出流的类型设置输出流的类型输出一些描绘信息,比方文件名,输出一些描绘信息,比方文件名,文件是下载还是直接翻开文件是下载还是直接翻开用来格式化文件名编码方式,确用来格式化文件名编码方式,确保文件名是中文的时候不会出现保文件名是中文的时候不会出现乱码乱码输出文件输出文件缓冲区所有内容向缓冲区所有内容向客户端输出,完毕客户端输出,完毕页面执行页面执行35删除文件删除文件protectedvoidbtn_Delete_Click(objectsender,EventArgse)/从从config中读取文件上传途径中读取文件上传途径stringstr
39、=ConfigurationManager.AppSettings.ToString();/从列表框控件中读取选择的文件名从列表框控件中读取选择的文件名stringstr=lb_;/组合成物理途径组合成物理途径stringstr=Server.MapPath(str+str);/删除文件删除文件System.IO.(str);/更新文件列表框控件更新文件列表框控件lb_(lb_(str);/更新文件夹信息更新文件夹信息InitFolderInfo();/更新文件描绘信息更新文件描绘信息tb_=;/更新重命名文本框更新重命名文本框lab_=;/调用自定义方法显示提示调用自定义方法显示提示Show
40、MessageBox(文件成功删除文件成功删除);36文件重命名文件重命名protectedvoidbtn_Rename_Click(objectsender,EventArgse)/从从config中读取文件上传途径中读取文件上传途径stringstr=ConfigurationManager.AppSettings.ToString();/从列表框控件中读取选择的文件名从列表框控件中读取选择的文件名stringstr=lb_;/从重命名文本框中读取新文件名从重命名文本框中读取新文件名stringstr=tb_;/组合成物理途径组合成物理途径stringstr=Server.MapPath(str+str);/组合成物理途径组合成物理途径stringstr=Server.MapPath(str+str);/文件重命名文件重命名System.IO.(str,str);/找到文件列表框控件中的匹配项找到文件列表框控件中的匹配项ListItemli=lb_(str);/修改文字修改文字li.Text=str;/修改值修改值li.Value=str;/调用自定义方法显示提示调用自定义方法显示提示ShowMessageBox(文件成功重命名文件成功重命名);37谢谢!382021/2/21