FileUpload这个控件我在随笔:

《在数据库中 存储图片 以及 在界面中显示图片(存储图片路径)- 这种方法相对与存储二进制文件好》之中,已经做了介绍,那篇随笔只是介绍上传图片,FIleUpload控件实质上是一个文件上传控件。

FileUpload 控件显示一个文本框控件和一个浏览按钮,使用户可以选择客户端上的文件并将它上载到 Web 服务器。用户通过在控件的文本框中输入本地计算机上文件的完整路径(例如,C:\MyFiles\TestFile.txt)来指定要上载的文件。用户也可以通过单击“浏览”按钮,然后在“选择文件”对话框中定位文件来选择文件。

用户选择要上载的文件后,FileUpload 控件不会自动将该文件保存到服务器。您必须显式提供一个控件或机制,使用户能提交指定的文件。例如,可以提供一个按钮,用户单击它即可上载文件。为保存指定文件所写的代码应调用 SaveAs 方法,该方法将文件内容保存到服务器上的指定路径。通常,在引发回发到服务器的事件的事件处理方法中调用 SaveAs 方法。

在文件上传的过程中,文件数据作为页面请求的一部分,上传并缓存到服务器的内存中,然后再写入服务器的物理硬盘中。

有三个方面需要注意:

1.确认是否包含文件

在调用 SaveAs 方法将文件保存到服务器之前,使用 HasFile 属性来验证 FileUpload 控件确实包含文件。若 HasFile 返回 true,则调用 SaveAs 方法。如果它返回false,则向用户显示消息,指示控件不包含文件。不要通过检查PostedFile 属性来确定要上载的文件是否存在,因为默认情况下该属性包含 0 字节。因此,即使FileUpload 控件为空,PostedFile 属性仍返回一个非空值。

2.文件上传大小限制

默认情况下,上传文件大小限制为 4096 KB (4 MB)。可以通过设置 httpRuntime 元素的 maxRequestLength 属性来允许上载更大的文件。若要增加整个应用程序所允许的最大文件大小,请设置 Web.config 文件中的 maxRequestLength 属性。若要增加指定页所允许的最大文件大小,请设置 Web.config 中 location 元素内的maxRequestLength 属性。

上载较大文件时,用户也可能接收到以下错误信息:

aspnet_wp.exe (PID: 1520) was recycled because memory consumption exceeded 460 MB (60 percent of available RAM).

以上信息说明,上传文件的大小不能超过服务器内存大小的60%。这里的60%是Web。config文件的默认配置,是配置节中的 memoryLimit 属性默认值。虽然可以修改,但是如果上传文件越大,成功几率越小,不建议使用。

3.上传文件夹的写入权限

应用程序可以通过两种方式获得写访问权限。您可以将要保存上载文件的目录的写访问权限显式授予运行应用程序所使用的帐户。您也可以提高为 ASP.NET 应用程序授予的信任级别。若要使应用程序获得执行目录的写访问权限,必须将 AspNetHostingPermission 对象授予应用程序并将其信任级别设置为AspNetHostingPermissionLevel.Medium 值。提高信任级别可提高应用程序对服务器资源的访问权限。请注意,该方法并不安全,因为如果怀有恶意的用户控制了应用程序,他(她)也能以更高的信任级别运行应用程序。最好的做法就是在仅具有运行该应用程序所需的最低特权的用户上下文中运行 ASP.NET 应用程序。

FileUpload控件的常用属性:

属性

数据类型

说明

FileBytes

byte[]

获取上传文件的字节数组

FileContent

Stream

获取指定上传文件的Stream对象

FileName

String

获取上传文件在客户端的文件名称

HasFile

Bool

获取一个布尔值,用于表示FileUpload控件是否已经包含一个文件

PostedFile

HttpPostedFile

获取一个与上传文件相关的HttpPostedFile对象,使用该对象可以获取上传文件的相关属性

可以通过3种方法访问上传文件:

1.通过FileBytes属性。该属性将上传文件数据置于字节数组中,遍历该数组,则能够以字节方式了解上传文件的内容。

2.通过FileContent属性。调用该属性可以获得一个指向上传文件的Stream对象。可以使用该属性读取上传文件数据,并使用FileBytes属性显示文件内容。

3.通过PostedFile属性。调用该属性可以获得一个与上传文件相关的HttpPostedFile对象,使用该对象可以获得与上传文件相关的信息。例如,调用HttpPostedFile对象的ContentLength,可以获得上传文件大小;调用HttpPostedFile对象的ContentType属性,可以获得上传文件的类型;调用HttpPostedFile对象的FileName属性,可以获得上传文件在客户端的完整路径(调用FileUpload控件的FileName属性,仅能获得文件名)。

示例:

前台代码:

1

2

3

4

5

6

示例8-3

7

8

9

10

11

12

13 FileUpload控件典型应用

14

15

16

17


18

19

20

21

22

23

24

后台代码(模仿MSDN):

1 usingSystem;2 usingSystem.Data;3 usingSystem.Configuration;4 usingSystem.Web;5 usingSystem.Web.Security;6 usingSystem.Web.UI;7 usingSystem.Web.UI.WebControls;8 usingSystem.Web.UI.WebControls.WebParts;9 usingSystem.Web.UI.HtmlControls;10

11 public partial class_Default : System.Web.UI.Page12 {13 protected void Page_Load(objectsender, EventArgs e)14 {15 }16 protected void BtnUpload_Click(objectsender, EventArgs e)17 {18 bool fileOK = false;19 string path = Server.MapPath("~/Temp/");20 if(FileUpload1.HasFile)21 {22 String fileExtension =System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();23 String[] allowedExtensions = { ".gif", ".png", ".bmp", ".jpg"};24 for (int i = 0; i < allowedExtensions.Length; i++)25 {26 if (fileExtension ==allowedExtensions[i])27 {28 fileOK = true;29 }30 }31 }32 if(fileOK)33 {34 try

35 {36 FileUpload1.SaveAs(path +FileUpload1.FileName);37 LabMessage1.Text = "文件上传成功.";38 LabMessage2.Text = "原文件路径:" + FileUpload1.PostedFile.FileName + "
" +

39 "文件大小:" + FileUpload1.PostedFile.ContentLength + "字节
" +

40 "文件类型:" + FileUpload1.PostedFile.ContentType + "
";41 }42 catch(Exception ex)43 {44 LabMessage1.Text = "文件上传不成功.";45 }46 }47 else

48 {49 LabMessage1.Text = "只能够上传图片文件.";50 }51 }52 }

通过对以上的示例进行分析,我们还可以用验证控件来实现对文件类型的验证:

正则表达式:

1

3 ErrorMessage="Only mp3, m3u or mpeg files are allowed!"

4 ValidationExpression="^(([a-zA-Z]:)|(\\{2}\w+)\$?)(\\(\w[\w].*))

5 +(.mp3|.MP3|.mpeg|.MPEG|.m3u|.M3U)$"

6 ControlToValidate="FileUpload1">

7

8

9

11 ErrorMessage="This is a required field!"

12 ControlToValidate="FileUpload1">

13

以上就是FileUpload控件的使用方法.

fileupload控件的属性_FileUpload控件相关推荐

  1. WPF中通过控件Margin属性设置控件位置

    WPF中通过控件Margin属性设置控件位置 一.Margin属性简介 二.Margin在cs文件中定义 三.Margin设置控件位置 四.参考文档 一.Margin属性简介 在使用WPF进行页面设计 ...

  2. STM32 ISP串口烧录 VB源码(一)Frame中主要控件及属性说明

    一.软件外观: 二.Frame中主要控件及其属性列表 Frame主要控件及其属性列表 控件名称 控件类型 控件属性 属性值 说明 ComPortlist list ComboBox 端口列表 提示选择 ...

  3. ASP.NET2.0自定义控件组件开发 第六章 深入讲解控件的属性

    深入讲解控件的属性持久化(一) 系列文章链接: ASP.NET自定义控件组件开发 第一章 待续 ASP.NET自定义控件组件开发 第一章 第二篇 接着待续 ASP.NET自定义控件组件开发 第一章 第 ...

  4. 用DataBindings属性绑定控件的值

    WinForm中的很多控件,如Label.TextBox等都包含DataBindings属性,其类型为ControlBindingsCollection,是Binding类的集合.Binding类代表 ...

  5. ASP.NET如何给控件增加属性?

    ASP.NET如何给控件增加属性? 今天xuedaonet给大家介绍提利用ASP.NET给控件增加属性的操作方法,请看下文! ASP.net给控件增加属性的思路 因为用户控件也是一个类,双城计中计20 ...

  6. 【 iOS 应用开发 】 UIKit 控件 ( 代码生成控件 | UIView 属性方法 | Storyboard | Bundle | Property List | 动画 | 图片内存优化 )

    文章目录 一. 代码生成控件 1. 创建设置项目 ( 1 ) 创建项目 ( ① 选择 Create a new Xcode project | ② 创建 Single View Application ...

  7. Android控件布局属性全解(一看就会)

    Android有太多的布局属性繁琐又晦涩,下面结合了网上很多资料汇总. 内容太多,可以Ctrl+F进行搜索 第一类:属性值为true或false android:layout_centerHrizon ...

  8. 关于控件Visible属性的说明

    * 启用ViewState的情况下,设置某一服务器控件的Value后,然后再将期Visible设置成false  * 在回传时(PostBack)其Value不会丢失,ViewState会保留状态   ...

  9. 自定义控件(Task01)——可以设置属性的控件

    源代码:13033480群共享 上面的自定义控件属性是不能设置的,一个链接控件,应该具有可以设置的最基本的链接属性HyperLink和显示的文本Text. 为了添加这两个属性,简单一点地做,我们的类需 ...

  10. 0811-按钮操作(加法计算器)(拖控件找控件代码属性名称)(frame center bounds)(上下左右移动button图片)...

    -------------------- 加法计算器 实现步骤 1.拖控件   改textField键盘属性为numberPad ,label双击修改名称自动缩小尺寸  改属性名称不会改尺寸,   放 ...

最新文章

  1. 给博客园添加文章自动目录
  2. 免费Web打印控件测试
  3. 2074. 反转偶数长度组的节点
  4. java 超时异常_Java如何实现任务超时处理
  5. 绝对干货!纯用HTML+CSS+JS 编写的计算器应用
  6. PCB走线载流能力-揭秘一
  7. 如何处理Oracle中TEMP表空间满的问题(转载)
  8. 小米 红米 历代手机型号大全 发布时间 发布价格
  9. CAD二次开发获取已选择实体
  10. 屏幕录像专家注册机破解方法
  11. uniapp navigateTo跳转失效
  12. C#邮件过滤系统(论文+可执行程序+源码+外文翻译+程序操作演示录像)
  13. 英语九百句 English900(含录音下载)
  14. 红山服务器虚拟化解决方法,红山虚拟化:数据备份与灾难恢复
  15. 被AMD显卡的专有驱动折磨的经历
  16. 2.4 设计评选优秀教师和学生的程序,其类结构如图 12.5 所示。当输入一系列教师 或学生的记录后,将优秀学生及教师的姓名列出来。 图 12.5 类结构 类 base char name[8]; 含
  17. linux 打开大文件命令,linux下大文件的读取
  18. 《Adobe Fireworks CS6中文版经典教程》——1.3使用属性面板
  19. 程序员的一些感悟,都活成自己想要的样子了吗?
  20. 调用百度云语音转文本

热门文章

  1. 二阶系统 matlab,线性二阶系统性能的MATLAB仿真.pdf
  2. 关于饿了么ui框架的使用之Form 表单的应用
  3. 简易计算器数码管c语言,简易计算器(数码管显示)
  4. 万字长文,知识图谱构建技术综述
  5. 身份证号码中间显示*星号
  6. 华为交换之间静态路由配置实例
  7. 计算机视频剪辑教程,电脑怎么剪辑视频?新手都能上手的视频剪辑教程分享
  8. AMADA阿玛达触摸屏维修折弯机主机维修
  9. 红帽linux系统安装指导
  10. AT4RE Patcher v0.6.3使用心得: