前往顾页
以后地位: 主页 > 收集编程 > .Net实例教程 >

FileUpload控件的利用根本教程

时候:2018-11-08 20:48来源:知行网www.zhixing123.cn 编辑:麦田守望者

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文件的默许建设,是<processModel>建设节中的 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属性,仅能获得文件名)。

演示一个最根基的文件上传示例:
Default.aspx
 

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>示例8-3</title>
<link id="InstanceStyle" href="StyleSheet.css" type="text/css" rel="stylesheet" />
</head>
<body>
<form id="Form1" runat="server">
<div>
<fieldset style="width: 290px">
<legend class="mainTitle">FileUpload控件典范利用</legend>
<br />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="BtnUpload" runat="server" Text="上传" OnClick="BtnUpload_Click" />
<hr />
<asp:Label ID="LabMessage1" runat="server" ForeColor="red" /><br />
<asp:Label ID="LabMessage2" runat="server" />
</fieldset>
</div>
</form>
</body>
</html>

Default.aspx.cs
 

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void BtnUpload_Click(object sender, EventArgs e)
{
bool fileOK = false;
string path = Server.MapPath("~/Temp/");
if (FileUpload1.HasFile)
{
String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
String[] allowedExtensions = { ".gif", ".png", ".bmp", ".jpg" };
for (int i = 0; i < allowedExtensions.Length; i++)
{
if (fileExtension == allowedExtensions[i])
{
fileOK = true;
}
}
}
if (fileOK)
{
try
{
FileUpload1.SaveAs(path + FileUpload1.FileName);
LabMessage1.Text = "文件上传成功.";
LabMessage2.Text = "<b>原文件途径:</b>" + FileUpload1.PostedFile.FileName + "<br />" +
"<b>文件年夜小:</b>" + FileUpload1.PostedFile.ContentLength + "字节<br />" +
"<b>文件范例:</b>" + FileUpload1.PostedFile.ContentType + "<br />";
}
catch (Exception ex)
{
LabMessage1.Text = "文件上传不成功.";
}
}
else
{
LabMessage1.Text = "只可以或许上传图片文件.";
}
}
}

------分开线----------------------------
标签(Tag):FileUpload控件
------分开线----------------------------
保举内容
猜你感兴趣