IT技術(shù)

NeatUpload大文件上傳控件
作者:
來源: 本站
發(fā)布日期: 2018/1/15 14:41:41
點(diǎn)擊量: 8231次
【 字體:
背景顏色:

使用NeatUpload控件實(shí)現(xiàn)ASP.NET大文件上傳

一般10M以下的文件上傳通過設(shè)置Web.Config,再用VS自帶的FileUpload控件就可以了,但是如果要上傳100M甚至1G的文件就不能這樣上傳了。NeatUpload是一款為數(shù)不多的開源、免費(fèi)的文件上傳控件,不僅支持大文件上傳,而且還顯示上傳進(jìn)度。下面我們來介紹一下NeatUpload控件的使用方法。


一、下載NeatUpload并解壓在任意位置
http://neatupload.codeplex.com/releases/view/59339,可以下載到最新的NeatUpload,目前最新版本應(yīng)該是NeatUploadBinaries-1-3-26,解壓后可以得到如下文件:
 


二、安裝配置NeatUpload控件(.Net Framework2.0環(huán)境及以上版本)
1. 將bin/中Brettle.Web.NeatUpload.dll添加到項(xiàng)目或網(wǎng)站的引用中:
 


  1. 在工具箱上添加項(xiàng),可以得到7個(gè)工具:
 


我們主要使用我們主要使用InputFile和ProgressBar這兩個(gè)控件。
至此,NeatUpload的安裝和配置工作完成。


三、使用NeatUpload控件


1. 前臺代碼


 
  1. 后臺代碼:
   if (AttachFile.HasFile)
        {
            string FileName = this.AttachFile.FileName;//獲取上傳文件的文件名,包括后綴
            string ExtenName = System.IO.Path.GetExtension(FileName);//獲取擴(kuò)展名
            string _datePath = DateTime.Now.ToString("yyyyMMdd") + "/";
            string toFileFullPath = HttpContext.Current.Server.MapPath("~/File_Upload/" + _datePath);
            //檢查是否有該路徑?jīng)]有就創(chuàng)建
            if (!Directory.Exists(toFileFullPath))
            {
                Directory.CreateDirectory(toFileFullPath);
            }
            string SaveFileName = System.IO.Path.Combine(
                    System.Web.HttpContext.Current.Request.MapPath("~/File_Upload/"),
                  _datePath + DateTime.Now.ToString("yyyyMMddhhmm") + ExtenName);//合并兩個(gè)路徑為上傳到服務(wù)器上的全路徑
            if (this.AttachFile.ContentLength > 0)
            {
                try
                {
                    AttachFile.MoveTo(SaveFileName, Brettle.Web.NeatUpload.MoveToOptions.Overwrite);
                    result = "/File_Upload/" + _datePath + DateTime.Now.ToString("yyyyMMddhhmmss") + ExtenName;
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                string url = "/File_Upload/" + _datePath + DateTime.Now.ToString("yyyyMMddhhmmss") + ExtenName;  //文件保存的路徑
                float FileSize = (float)System.Math.Round((float)AttachFile.ContentLength / 1024000, 1); //獲取文件大小并保留小數(shù)點(diǎn)后一位,單位是M
            }
            else
            {

                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "警告", "alert('選擇要上傳的文件為空!');", true);

            }
        }
        else
        {
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "警告", "alert('請選擇要上傳的文件!');", true);
        }
  1. 最終效果:
    


四、實(shí)例使用環(huán)境


1. 使用環(huán)境VS2012+.Net Framework2.0,如果是在.Net Framework 3.5及其以上版本使用安裝和配置會更簡單。
五、 常見問題


1.
解決方法是在system.webServer節(jié)中加入以下內(nèi)容,讓服務(wù)器允許的最大請求量增加,如下設(shè)置的是1G:


<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="1073741824" />
      </requestFiltering>
    </security>
  </system.webServer>


另外,不行的話還得修改IIS配置

選中自己的站點(diǎn),并雙擊“請求篩選”,選擇右側(cè)的”編輯功能限制”,在彈出的頁面中,我們看到默認(rèn)請求限制正是30M,修改請求大小限制為合適的值即可,保存后重啟站點(diǎn)即可。


 
2.

最可能的原因:
   此應(yīng)用程序在system.web/httpModules節(jié)中定義配置;
解決方法是將system.web節(jié)的“UploadHttpModules"配置調(diào)整到system.webServer節(jié)中,以適應(yīng)在托管管道模式下運(yùn)行應(yīng)用程序:
<httpModules>
      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
      <add name="UploadHttpModule" type="Brettle.Web.NeatUpload.UploadHttpModule,Brettle.Web.NeatUpload"/>
</httpModules>


三:關(guān)于進(jìn)度條的設(shè)置及使用
1.      單文件上傳,將InputFile和ProgressBar控件加進(jìn)頁面中,再添加一個(gè)服務(wù)器端按鈕,添加鼠標(biāo)點(diǎn)擊事件,如下:
     <script type="text/javascript">
        function ToggleVisibility(id, type)   //進(jìn)度條的隱藏和顯示
        {
            el = document.getElementById(id);
            if (el.style) {
                if (type == 'on') {
                    el.style.display = 'block';
                }
                else {

                    el.style.display = 'none';

                }
            }
            else {
                if (type == 'on') {
                    el.display = 'block';
                }
                else {
                    el.display = 'none';
                }
            }
        }
</script>


控件生成
<div class="col-sm-5">                                       
   <Upload:InputFile ID="AttachFile" runat="server" />  
   <Upload:ProgressBar ID="ProgressBar1" runat='server' >
</Upload:ProgressBar> </div>
點(diǎn)擊事件


<asp:Button ID="btnSave" runat="server" Text="保存" CssClass="btn btn-primary" OnClick="btnSave_Click" OnClientClick="ToggleVisibility('progressbar', 'on')"/>  
4、  修改進(jìn)度條樣式,主要修改default.css、Progress.aspx及ProgressBar控件的屬性

將壓縮包解壓后的NeatUpload文件復(fù)制粘貼到自己的項(xiàng)目中


 


 
修改這兩個(gè)文件:


 


 
 default.css部分,修改進(jìn)度條的顏色,背景圖片,顯示文字的顏色等
  1. .ProgressDisplay .ProgressBar   
  2. {  
  3.     background-color:#6CAF00; /*修改背景顏色*/  
  4.     background-image:url('progressbar.gif')  /*修改背景圖片*/  
  5. }  
  6. #normalInProgress{  
  7.      color: Red;      /*正在上傳時(shí)進(jìn)度條的字體顏色*/  
  8. }  
  9. #completed{  
  10.      color:Blue;   /*上傳完成的字體顏色*/  
  11. }  
 
Progress.aspx部分,修改在整個(gè)上傳過程中進(jìn)度條顯示的狀態(tài)和信息
  1. <Upload:DetailsSpan id="normalInProgress" runat="server" WhenStatus="NormalInProgress" >  
  2.     <%--  文件正在上傳時(shí)顯示的   --%>  
  3.     <%-- <%# FormatCount(BytesRead) %>/<%# FormatCount(BytesTotal) %> <%# CountUnits %> --%>  
  4.     <%# FormatRate(BytesPerSec) %>       <%# String.Format("{0:0%}", FractionComplete) %>  
  5.     <%-- - 剩余時(shí)間<%# FormatTimeSpan(TimeRemaining) %> s --%>  
  6. </Upload:DetailsSpan>  
  7. <Upload:DetailsSpan id="chunkedInProgress" runat="server" WhenStatus="ChunkedInProgress" >  
  8.     <%# FormatCount(BytesRead) %> <%# CountUnits %>  
  9.     at <%# FormatRate(BytesPerSec) %>  
  10.     - <%# FormatTimeSpan(TimeElapsed) %> elapsed  
  11. </Upload:DetailsSpan>  
  12. <Upload:DetailsSpan id="processing" runat="server" WhenStatus="ProcessingInProgress ProcessingCompleted" >  
  13.     <%# ProcessingHtml %>  
  14. </Upload:DetailsSpan>  
  15. <Upload:DetailsSpan id="completed" runat="server" WhenStatus="Completed">  
  16.     <%--  文件上傳完成時(shí)顯示的   --%>  
  17.     文件大小: <%# FormatCount(BytesRead) %> <%# CountUnits %>  
  18.     <%-- at <%# FormatRate(BytesPerSec) %>   
  19.         took <%# FormatTimeSpan(TimeElapsed) %> --%>  
  20. </Upload:DetailsSpan>  
  21. <Upload:DetailsSpan id="cancelled" runat="server" WhenStatus="Cancelled">  
  22.     上傳已被取消  
  23. </Upload:DetailsSpan>  
  24. <Upload:DetailsSpan id="rejected" runat="server" WhenStatus="Rejected">  
  25.     禁止: <%# Rejection != null ? Rejection.Message : "" %>  
  26. </Upload:DetailsSpan>  
  27. <Upload:DetailsSpan id="error" runat="server" WhenStatus="Failed">  
  28.     錯(cuò)誤: <%# Failure != null ? Failure.Message : "" %>  
  29. </Upload:DetailsSpan>  
進(jìn)度條修改后還得繼續(xù)完善   


掃一掃在手機(jī)打開當(dāng)前頁

Contact

聯(lián)系我們

告訴我們您想要的吧!我們?yōu)楫?dāng)?shù)乜蛻籼峁I(yè)、及時(shí)的服務(wù)
地址:云南省昆明市白云路368號
電話:400-871-8716 (工作時(shí)間:09:00-18:00(周一至周五))
何總:23592693
李總:53815112
亚洲日韩在线a在线观看,欧美激情 在线观看,97色伦图片97综合影院,成人AV天堂一二三在线观看,欧美色吧视频在线观看,国产l精品国产亚洲区,久久综合亚洲图片,99久久国产综合精品1,久久AⅤ无码AV高潮AV喷吹,亚洲综合无码一区二区三区不卡
亚洲AV无码精品无码麻豆| 欧洲人与动牲交α欧美精品 | 精品丝袜人妻久久久久久| 精品无码日韩国产不卡av| 免费a级毛片无码av| 99精品国产高清一区二区麻豆| 亚洲精品手机在线| 色久综合视频| 亚洲伊人久久综合影院2021| 十八禁无码精品a∨在线观看 | 国产VR精品区| 亚洲欧洲日产国码av系列天堂| gogo大胆无码视频| 99无码人妻一区二区三区免费| 国产女主播高潮在线播放| 免费精品国产自在| 曰韩精品无码一区二区三区视频| 人妻激情另类乱人伦人妻| 免费a级毛片波多野结衣| 久久无码高潮喷水免费看| 无卡无码无免费毛片| 看真人视频a级毛片| 久久亚洲精品无码AV大香| 99久久99久久久精品齐齐| 国产精品自线在线播放| 一本久久a久久精品vr综合| 激情人妻另类人妻伦| 粗大猛烈进出高潮视频| 人人妻人人做从爽精品| 伊伊人成亚洲综合人网7777| 午夜男人一级毛片免费| 国内精品国产三级国产av| 曰本三级香港三级人妇99视频| 男人的天堂在线a无码| 中文字幕人成乱码熟女免费| 国产熟睡乱子伦午夜视频| 国产特级av| 欧美 日韩 国产 亚洲 色| 可以看的黄a级网站| 色欲aⅴ亚洲情无码av| 亚洲欧洲中文日韩AV乱码|