在Toolbox界面提供了各式的控件,叫服务器控件,和C/S的开发模式很像
Setp1 上传配置
Web.config中配置
1 设置允许请求的最大字节数
<system.web>
<!--设置请求的最大字节数(默认是4096,单位:KB)-->
<httpRuntime maxRequestLength="40960"/>
</system.web>
2 设置上传的最大字节数
<appSettings>
<!--预设30M,配置上传文件最大字节数,单位KB-->
<add key="PhysicsObjectLength" value="30720"/>
</appSettings>
3 设置上传路径
根目录新建一个文件夹UploadFiles
Setp2 视图
<%@ Page Language="C#"
AutoEventWireup="true"
CodeBehind="WebForm.aspx.cs" Inherits="WebApplication2.WebForm" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
请选择要上传的文件:<asp:FileUpload ID="ful" runat="server"/>
<br />
<asp:Button ID="btnUpLoad" runat="server" Text="开始上传" OnClick="btnUpLoad_Click" />
<br />
<asp:Literal ID="ltaMsg" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
Setp3 后端
protected void btnUpLoad_Click(object sender, EventArgs e)
{
//判断文件是否存在
if (!this.ful.HasFile) return;
//获取文件大小,判断是否符合设置要求(变成MB)
double fileLength = this.ful.FileContent.Length/(1024.0*1024.0);
//获取配置文件中上传文件的限制大小
double limitedLength = Convert.ToDouble(System.Configuration.ConfigurationManager.AppSettings["PhysicsObjectLength"]);
limitedLength = limitedLength / 1024.0;
//判断实际文件大小是否符合要求
if (fileLength > limitedLength)
{
this.ltaMsg.Text = "上传的文件超过了3M";
this.ltaMsg.Text =
"<script type='text/javascript'>" +
"alert('上传文件最大不能超过'" + limitedLength + "M')</script>";
return;
}
//获取文件名,判断文件扩展是否符合要求
string fileName = this.ful.FileName;
//判断文件名是否是exe文件
if (fileName.Substring(fileName.LastIndexOf(".", StringComparison.Ordinal)).ToLower() != ".exe")
return;
fileName = DateTime.Now.ToString("yyyyMMddhhssms") + fileName;
string path = Server.MapPath("~/UploadFiles");
try
{
this.ful.SaveAs(path + "/" + fileName);
this.ltaMsg.Text = "<script type='text/javascript'>alert('文件上传成功')</script>";
}
catch (Exception exception)
{
Console.WriteLine(exception);
throw;
}
}
Setp4 运行
运行后F12看到的源码
<body>
<form method="post" action="./WebForm.aspx" id="form1" enctype="multipart/form-data">
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="2tTIqDem0zJiUtGU77GScZu9GuPWGPlhzCcp/ZVSpTbdL6NyvDy1QX5PBiNNthcGKLFfZ/vUhxWl3ReGiCwr3aZLT6DLCGEmoOdBIYmvpCKqzfpc5H3NBZUOlCknQQzhy8ZCOEBYDgotYHPVFkcfhQ==" />
</div>
<div>
请选择要上传的文件:<input type="file" name="ful" id="ful" />
<br />
<input type="submit" name="btnUpLoad" value="开始上传" id="btnUpLoad" />
<br />
</div>
<div class="aspNetHidden">
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="7F653548" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="C+15Jy0k6SJtL5WjrhzLo2WZows8PthWoMW5MMJn9zQsUQifAx2ZjfFx3aAbEpdM6XLiAAQyw58Io6qrDaj87vi6Fb/qUAPS/kYPs6BDo1/mqPtGLrA/xwi0cc/eq13H" />
</div></form>
<!-- Visual Studio Browser Link -->
<script type="application/json" id="__browserLink_initializationData">
{"appName":"Chrome","requestId":"fb8a692d20c947bda95f20e4a05b73c6"}
</script>
<script type="text/javascript" src="http://localhost:22955/9fb3c6ad494c416f930a7d233a4756f9/browserLink" async="async"></script>
<!-- End Browser Link -->
</body>
总结
asp:FileUpload服务器控件翻译成type是file的input标签,asp:Button服务器控件翻译成submit标签
服务器控件最后是生成相对应的HTML标签,这样也可以说服务器控件就是对HTML标签的封装
这样的开发方式,F12看到hidden,里面包装看不懂的信息