C#实验指导书[实验5]

  • 格式:doc
  • 大小:126.00 KB
  • 文档页数:7

.Net Web应用程序设计 实验指导书(草稿) 李盘靖 山东理工大学计算机学院 第 1页

实验五 服务器控件FileUpload的综合应用 实验目的 1. 了解各种标准服务器控件; 2. 熟悉基于标准服务器控件的Web应用程序的开发过程; 3. 综合应用各种标准服务器控件进行Web应用程序的开发。

实验内容

实验项目:文件的上传 文件的上传下载在B/S架构中应该是常见的需求,比如考试报名时需要上传照片、办公自动化系统中需要上传文档。以下内容为在FileUpload控件基础上,如何实现文件的上传及其大小、类型等相关信息的获取,结合JavaScript脚本等如何实现图片的预览以及如何通过Web.config对上传文件的大小作出限定。

[实验步骤] 1. 建立ASP.NET Web应用程序项目FileUpload,在生成的默认页面中加入如下三个控件,用来上传文件并显示其基本信息:

2. 不添加任何事件,编译运行,可见asp:FileUpload对应的HTML元素为: 同时注意到客户端对应生成的Form表单多了enctype的属性:

this.lbFileInfo.Text = "文件上传成功,基本信息如下:" + "保存路径" + strFilePath + "文件名称" + strFileName + "文件大小" + this.fileUp.PostedFile.ContentLength + "文件类型" + this.fileUp.PostedFile.ContentType + "本地路径" + this.fileUp.PostedFile.FileName; } 4. 编译运行后,选择一小于4M的任意类型文件,单击上传后看能否实现正常的上传功能,并观察上传文件在服务器端的位置。

小结:由上可以注意到asp:FileUpload控件主要提供选择本地文件的功能,同时将选择的文件封装到PostedFile对象中,可通过对应的属性获取待上传文件的属性,并提供SaveAs方法用于在指定位置保存。 5. 在没有选择文件时,就单击上传,看是否会出错。会 小结:FileUpload显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上传到服务器。可通过在控件的文本框中输入本地路径指定要上载的文件,也可以通过单击“浏览”按钮,然后在“选择文件”对话框中选择文件。需要注意的是:用户选择要上载的文件后,FileUpload控件并不会自动将该文件上传。需要显式提供通过控件等机制让用户提交选定的文件,如加入一个“上传”按钮,让用户单击后上传文件。通常在回发(PostBack)到服务器的事件处理方法中调用SaveAs方法,用以在服务器端保存上传的文件。而在在调用SaveAs之前,一般使用HasFile属性验证是否包含文件。用PostedFile==null来验证是不可取的,因为默认情况下该属性包含0字节,即使FileUpload控件为空,PostedFile仍将返回一个非空值。

6. 在bnUpload的单击事件代码中添加: protected void bnUpload_Click(object sender, EventArgs e) { if (!this.fileUp.HasFile) return; string strFileName; „„ 7. 重新编译运行后,在没有选择文件时,单击上传,看是否会出错。 第 3页

8. 同上例,尝试上传一个大文件,如几百M的电影,看是否会出错。 小结:一般地认为,默认只能上传<4M的文件(其目的在于防止拒绝服务攻击,如因用户向服务器发送大型文件而导致的拒绝服务攻击),否则将显示一个“无法显示页面”的页面。可以通过设置httpRuntime元素的maxRequestLength属性来允许上载更大的文件。若要增加整个应用程序所允许的最大文件大小,请设置Web.config文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置Web.config中location元素内的maxRequestLength属性。 9. 在Web.config文件将maxRequestLength分别设置为1和1024,分别上传一个100K左右的文件,看其结果有何不同。 10. 在Web.config文件添加location元素后,将基path指向当前页面,并将maxRequestLength设置为1024000,再上传一个几百M的电影,观察其结果(可事先启动任务管理器,观察这一过程对CPU和内存的占用情况)。死机了…… 11. 思考:Web.config在网站开发中的基本作用是什么,location的优先级别,为什么默认上传文件的大小上限被设置为4M,将其上限改大后有何风险。 12. 使用FileUpload控件上传文件一般有如下几个步骤: 1)利用HasFile属性判断是否上传了文件。 2)在服务器上指定一个物理路径,并检查这个物理路径是否存在,如果不存在则先创建。 3)根据指定的服务器路径,利用SaveAs()保存上传的文件。同时可以验证上传的文件格式、大小等是否符合要求。 4)将相对路径或者URL地址保存至数据库或其它地方,以便以后下载。 13. 功能扩展:对于给定服务器物理路径,怎么判断其是否存在,在不存在的前提下如何创建。提示:利用System.IO.Directory的方法。 protected void bnUpload_Click(object sender, EventArgs e) { if (!this.fileUp.HasFile) return; string strFileName; string strFilePath; 第 4页

strFileName = Path.GetFileName( this.fileUp.PostedFile.FileName); strFilePath = Server.MapPath("~/upload/"); if (!System.IO.Directory.Exists(strFilePath)) { System.IO.Directory.CreateDirectory(strFilePath); } this.fileUp.PostedFile.SaveAs(strFilePath); this.lbFileInfo.Text = "文件上传成功,基本信息如下:" + "保存路径" + strFilePath + "文件名称" + strFileName + "文件大小" + this.fileUp.PostedFile.ContentLength + "文件类型" + this.fileUp.PostedFile.ContentType + "本地路径" + this.fileUp.PostedFile.FileName;

}调试后有错误 14. 功能扩展:如何在文件上传成功后,动态添加其超链,从而能查看或下载该文件。提示:利用asp:Literal控件,this.litUp.Text = string.Format("{0}", strFileName); 15. 思考:怎么在上传图片之前,在Web浏览器中预览图片效果? 16. 方法1:通过javascript动态添加IMG,并将其SRC修改为本地上传文件。 添加如下脚本: