《ASP.NET程序设计教学课件作者徐占鹏单元七单元7项目的文件操作二FileUpload控件》由会员分享,可在线阅读,更多相关《ASP.NET程序设计教学课件作者徐占鹏单元七单元7项目的文件操作二FileUpload控件(21页珍藏版)》请在金锄头文库上搜索。
1、单元七 项目的文件 操作(二) 上传控件FileUpload,主讲教师:袁帅锋,学习目标,【知识目标】 熟练掌握上传控件FileUpload的使用; 【技能目标】 能够使用FileUpload控件进行上传文件,以及能够限制上传文件的大小和上传的请求时间;,注: 本课内容参考教材 单元七1.1,FileUpload 概述,FileUpload 控件,FileUpload 类显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。 用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:MyFilesTestFile.txt)来指定要上载的文件。 用户
2、也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件。可以为用户提供一种将文件从用户的计算机发送到服务器的方法。该控件在允许用户上载图片、文本文件或其他文件时很有用。要上载的文件将在回发期间作为浏览器请求的一部分提交给服务器。,FileUpload常用属性,FileUpload 实例,实现一个上传图片的功能,实例前台代码,Please Upload your Image: 上传文件: ,后台代码:,protected void Page_Load(object sender, EventArgs e) Boolean fileOk=false; Image1.Visible
3、 = false; if(Page.IsPostBack) string fpath=Server.MapPath(“/Images/“); if (FileUpload1.HasFile) string allowedExtension = “.jpg“, “.png“, “.gif“, “.bmp“, “.jpeg“ ; string fileExtension = Path.GetExtension(FileUpload1.FileName).ToLower(); for (int i = 0; i allowedExtension.Length; i+) if (allowedExte
4、nsioni.ToString() = fileExtension) fileOk = true; ,续上页代码:, if (fileOk) try FileUpload1.SaveAs(fpath + FileUpload1.FileName); Label1.Text = “上传文件成功!“; Image1.Visible = true; Image1.ImageUrl = “/Images/“ + FileUpload1.FileName; catch(Exception ex) Label1.Text = “上传文件失败!“+ex.ToString(); else Label1.Tex
5、t = “你还没有上传文件!“; ,理解 限制文件的大小,在用户进行文件上传的过程中,文件大小的限制会发送给接收文件的服务器。默认的限制大小是4MB (4096KB),如果用户试图上传大于4096KB的文件,传输就会失败。 文件大小限制可以保护应用程序。要禁止有恶意用户给Web服务器上传大量的大文件,试图占用服务器上的所有可用进程,这称为拒绝服务攻击。它会占用Web服务器的资源,使服务器拒绝合法用户发送响应。 在配置文件中来限制用户上传文件的大小。添加一个节点.添加代码如下:,在web.config中配置如下:, maxRequestLength 属性是请求文件最大值(单位KB) execut
6、ionTimeout属性:向服务器请求最长的响应时间(单位秒),使用文件流读写文件,StreamReader类、StreamWriter类、BinaryReader类和BinaryWriter类虽然非继承自Stream类,它们也负责读取文件,称为流读取器和流写入器,它们与Stream类的区别如下。 从System.IO.Stream继承的类可以进行字节输入和输出。 BinaryReader类和BinaryWriter类以二进制形式进行基本类型数据流的读取和写入,StreamReader类和StreamWriter类是实现读取和写入字符方法的抽象类。 实际上,通常不需要直接和FileStream
7、类型的成员交互,而是使用各种Stream包装类,例如StreamReader类、StreamWriter类、BinaryReader类和BinaryWriter类,它们能更方便地处理文本数据和.NET基本数据类型。,FileStream类,常用属性:CanRead、CanSeek、CanWrite、Length、Position 常用方法:Read、ReadByte 、Write、 WriteByte、Seek、Flush、Close 构造函数: public FileStream(string path ,FileMode mode); public FileStream(string pa
8、th ,FileMode mode,FileAccess access); Read方法:用于由文件流中读取数据并保存到字节数组array中,其语法形式: public override int Read(bytearray,int offest,int count);,FileStream类,ReadByte方法:用于由文件流中读取一个字节的数据,并将读取位置提升一个字节,其返回值为读取的字节转换为int类型的值,如果从流的末尾读取,则返回值为-1。其语法形式如下: public override int ReadByte(); Write方法:把字节数组array中的数据写入到文件流中,其
9、语法形式如下: public override void Write(bytearry,int offest, int count); WriteByte方法:用于向文件流中写入一个字节,其语法形式如下: public override void WriteByte(byte value); Flush方法:用于将保存在缓冲区中的所有数据真正写入到文件中,其语法形式如下 public override void Flush(); Flush方法:用于将保存在缓冲区中的所有数据真正写入到文件中,其语法形式如下: public override void Flush(); Close方法:关闭文件
10、流并释放与当前文件流关联的全部资源,其语法形式如下: public override void Close ();,StreamWriter类和StreamReader类,与FileStream类中的Read方法和Write方法相比,这两个类的应用更为广泛且简单,因为StreamWriter类和StreamReader类按字符操作文件流,而FileStream类使用字节操作文件流。 StreamWriter类常用属性:AutoFlush 、BaseStream StreamWriter类常用方法:Write 、WriteLine、 Close 、Flush 示例: FileStream MyF
11、ile=new FileStream (“D:example.txt“,FileMode.OpenOrCreate , FileAccess .Write ); StreamWriter MyStreamWriter = new StreamWriter(Stream)MyFile, System.Text. Encoding.Unicode); MyStreamWriter.Write(“你好”); MyStreamWriter.Flush(); MyStreamWriter.Close();,StreamWriter类和StreamReader类,StreamReader和相关的Strin
12、gReader一样,它们都从TextReader抽象类型派生。TextReader基类为这些派生类型提供了一套非常有限的功能,特别是读取字符流。 StreamWriter类型从TextWriter抽象基类派生。这个类定义了一些成员,使得派生的类型能向某个字符流写入文本数据。,StreamWriter类和StreamReader类,StreamWriter类和StreamReader类,派生的StreamWriter类提供了对Write()、Close()和Flush()方法的有效实现,而且还定义了AutoFlush属性。如果把这个属性设置为true的话,StreamWriter会在每次执行一个
13、写操作后,立即写入数据并清理缓冲区。设置AutoFlush为false能获得更好的性能,这样的话,使用StreamWriter完成了写操作后需要调用Close()。,StreamWriter类和StreamReader类,static void Main(string args) Console.WriteLine(“* Fun with StreamWriter / StreamReader *n“); . / 现在开始从文件读数据。 Console.WriteLine(“Here are your thoughts:n“); StreamReader sr = File.OpenText(
14、“reminders.txt“); string input = null; while (input = sr.ReadLine() != null) Console.WriteLine (input); ,StreamWriter类和StreamReader类,直接创建StreamWriter/StreamReader类型,/ 得到一个StreamWriter然后写字符串数据。 StreamWriter writer = new StreamWriter(“reminders.txt“); . / 从文件读取数据。 StreamReader sr = new StreamReader(“reminders.txt“); .,StreamWriter类和StreamReader类,本节总结,本节我们主要讲了FileUpload控件使用,和 文件流使用文件流来读取文件和写入文件。,