首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 大檔案上傳解決方案:Telerik RadUpload 元件實作

     編輯:ASP.NET 基礎

前言

ASP.NET 內建 FileUpload 控制項受限於 maxRequestLength 與 executionTimeout,難以支援超大檔案上傳。本文介紹 Telerik RadUpload 元件,透過 HTTP Module 攔截串流,實現大檔案分塊上傳與即時進度顯示。

環境準備

  1. 下載 RanUpLoad 組件(包含 RadUpload.Net2.dll、Telerik.QuickStart.dll、對應 XML 文件)
  2. 將三個檔案置於專案 bin 目錄
  3. 專案加入參考:RadUpload.Net2.dll、Telerik.QuickStart.dll

ASPX 頁面配置

<%@ Register TagPrefix="telerik" Namespace="Telerik.QuickStart" Assembly="Telerik.QuickStart" %>
<%@ Register TagPrefix="radU" Namespace="Telerik.WebControls" Assembly="RadUpload.Net2" %>




Web.config 關鍵設定


    
    
    
    
        
    
    
    
        
    




    
        
    
    
        
    

後端上傳處理程式碼

using Telerik.WebControls;

protected void btnUpload_Click(object sender, EventArgs e) {
    // 檢查上傳內容
    if (RadUploadContext.Current == null) return;
    if (RadUploadContext.Current.UploadedFiles.Count <= 0) {
        ShowAlert("請選擇上傳檔案!");
        return;
    }

    // 單檔 2GB 限制檢查
    if (RadUploadContext.Current.UploadedFiles[0].ContentLength >= 2147483647) {
        ShowAlert("上傳檔案不得超過 2GB!");
        return;
    }

    foreach (UploadedFile file in RadUploadContext.Current.UploadedFiles) {
        string fileName = Path.GetFileName(file.FileName);
        string virtualPath = Path.Combine("~/save", fileName);
        string savePath = Server.MapPath(virtualPath);
        
        // true 參數表示覆蓋同名檔案
        file.SaveAs(savePath, true);
    }
    
    ShowAlert("上傳完成!");
}

void ShowAlert(string msg) {
    Page.ClientScript.RegisterStartupScript(GetType(), "MsgBox", 
        $"");
}

多檔案上傳支援

頁面可放置多個 FileUpload 控制項,後端透過 foreach (UploadedFile file in RadUploadContext.Current.UploadedFiles) 迴圈逐一處理。

優缺點分析

優點缺點
支援超大檔案(>2GB 需 64 位元環境)需引入第三方商業元件
內建進度條、續傳、多檔佇列Flash/Silverlight 版本已淘汰,HTML5 版需新授權
HTTP Module 攔截串流,不佔用 ASP.NET 請求佇列Web.config 設定較複雜,易遺漏 httpModules/httpHandlers

現代替代方案

  • HTML5 分片上傳:前端 File API 切片,後端 Web API 合併(如 Resumable.js + ASP.NET Core)
  • Telerik Kendo UI Upload:HTML5 原生實現,支援分片、拖曳、驗證
  • Azure Blob / AWS S3 直傳:前端直傳雲端儲存,後端僅處理回調

結語

Telerik RadUpload 為傳統 ASP.NET Web Forms 時代解決大檔上傳的經典方案。雖然技術棧已老舊,但其 HTTP Module 攔截串流、客戶端進度輪詢的架構設計,對理解大檔上傳核心機制仍具啟發意義。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved