天天看點

ASP.NET實戰之檔案上傳

    時下比較流行的雲盤,比如百度雲盤,360雲盤,金山快盤等等,相信大家都用過.雲盤是網際網路存儲工具,是網際網路雲技術的産物,是通過網際網路為企業和個人提供資料資訊的存儲,讀取以及下載下傳等服務,其最大的兩個特點是安全穩定和海量存儲.我的筆記本硬碟隻有500G,有一天當我發現我的6個硬碟分區中紅了4個,我就開始往我的百度雲盤上"搬東西",這個搬東西就是我們今天要談到的"檔案上傳".

ASP.NET實戰之檔案上傳

    其實檔案上傳在網際網路應用和網站開發中十分常見,我們在各類社交軟體中使用的"照片上傳",在各類考試網上報名時,要上傳本人照片等等本質上都是檔案上傳,隻不過這個檔案是圖檔或者照片罷了.說了這麼多隻是想表示,檔案上傳的功能應用領域十分廣泛,是以在Web開發中也是一個非常重要的的技術.雖然我并不清楚,各類網盤的檔案上傳技術是如何實作的,但是我相信大緻的原理是一樣的.

    最近在學習ASP.NET技術,今天就使用它來簡單的模拟一下檔案上傳的功能,隻是供學習參考而已,不作為商業開發技術使用,大家也别較真.下面來看具體的實作過程:

    首先建立一個ASP.NET應用程式項目,然後添加一個Web窗體,名稱自己定.建好之後如下圖所示:

ASP.NET實戰之檔案上傳

    然後對inputfile.aspx檔案進行頁面和設計和代碼編寫,這裡比較重要的是一個asp控件,叫做FileUpload控件.它主要是調用系統API來浏覽本地的檔案,然後添加上傳.在這裡我們一定要建立一個檔案夾用來存儲從用戶端上傳的檔案,比如我在程式的項目檔案下建立了一個UpFile檔案夾如下圖

ASP.NET實戰之檔案上傳

    下面來看前台和背景的代碼部分,鑒于隻是舉例,對于頁面布局就不那麼複雜了,就三個控件,先看頁面代碼

<span style="font-size:18px;"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="inputfile.aspx.cs" Inherits="InputFile.inputfile" %>

<!DOCTYPE html>
<link href="filecss.css" target="_blank" rel="external nofollow"  rel="stylesheet" />
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>檔案上傳</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div >
        <asp:Panel ID="Panel1" runat="server" Height="142px" Width="256px" CssClass ="Panel" >
            <div class ="buju">
                <asp:Label ID="Label1" runat="server" Text="選擇您要上傳的檔案:"></asp:Label>
            </div>
            <div class ="buju">
                <asp:FileUpload ID="FileUpload1" runat="server" />
            </div>
            <div class ="buju">
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="上傳" />
            </div>
        </asp:Panel>
    </form>
</body>
</html></span>
           

    相應的頁面背景代碼如下:

<span style="font-size:18px;">  protected void Button1_Click(object sender, EventArgs e)
        {
            //擷取将要上傳檔案的絕對路徑
            string FullFileName = this.FileUpload1.PostedFile.FileName;
            //通過字元串截取函數将上傳檔案的檔案名提出來
            string fileName = FullFileName.Substring(FullFileName.LastIndexOf("\\") + 1);
            //使用控件的方法儲存檔案到指定的檔案夾中
            this.FileUpload1.PostedFile.SaveAs(Server.MapPath("UpFile") + "\\" + fileName);
        }</span>
           

    最後我們來看運作結果的界面,我分别上傳圖檔,文檔和視訊檔案以及其他的一些其他格式的檔案,比如zip壓縮檔案等,來測試能能否上傳成功.無論是什麼格式檔案都可以上傳,隻是在測試中出現了一個問題,那就是大檔案的處理。

    當然在測試的過程中,當我上傳一個20多M的視訊檔案時,報錯了,至于更大的檔案,那就無法完成了。

ASP.NET實戰之檔案上傳

    上網找了找解決方法,發現是控件對檔案大小有一個限制,預設是4M,如何修改呢?很簡單,隻需要在配置檔案web.config的system.web中的httpruntime标簽中作如下設定即可:

ASP.NET實戰之檔案上傳

        maxRequestLength訓示ASP.NET 支援的最大檔案上載大小。該限制可用于防止因使用者将大量檔案傳遞到該伺服器而導緻的拒絕服務攻擊。指定的大小以 KB 為機關。預設值為 4096KB (4 MB)。

        executionTimeout訓示允許執行請求的最大時間,以秒為機關,預設90秒

    小結:這是一個特别簡單的例子,但是卻是一個特别有用的東西,不論技術多麼的高超,都是在這些的基礎上變得更加完美的。是以打好基礎很重要。