I can 前端-08 服務器控件之上傳

在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,裏面包裝看不懂的信息

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章