亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net文件上傳帶進度條實現案例(多種風格)

2024-07-10 13:29:20
字體:
來源:轉載
供稿:網友

這篇文章主要講解了asp.net文件上傳帶進度條實現案例,有不同風格的進度條,一定有一款最適合你的。

先飽飽眼福:

在之前的文章中也有類似帶進度條文件傳送的案例,大家可以翻閱之前的文章對知識點進行擴充。

部分代碼:

 

 
  1. <%@ Page Language="C#" %>  
  2. <%@ Register Assembly="MattBerseth.WebControls.AJAX" Namespace="MattBerseth.WebControls.AJAX.Progress" TagPrefix="mb" %>  
  3.  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  5.  
  6. <html xmlns="http://www.w3.org/1999/xhtml">  
  7. <head runat="server">  
  8. <title>Untitled Page</title>  
  9. <link rel="Stylesheet" href="_assets/css/progress.css" mce_href="_assets/css/progress.css" />  
  10. <link rel="Stylesheet" href="_assets/css/upload.css" mce_href="_assets/css/upload.css" />  
  11. <mce:style type="text/css"><!--  
  12. BODY{ font-family:Arial, Sans-Serif; font-size:12px;}  
  13.  
  14. --></mce:style><style type="text/css" mce_bogus="1"> BODY{ font-family:Arial, Sans-Serif; font-size:12px;}  
  15. </style>  
  16. <mce:script type="text/C#" runat="server"><!--  
  17.  
  18. protected void Page_Load(object sender, EventArgs args)  
  19. {  
  20. if (!this.IsPostBack)  
  21. {  
  22. this.Session["UploadInfo"] = new UploadInfo { IsReady = false };  
  23. }  
  24. }  
  25.  
  26. /// <summary>  
  27. ///  
  28. /// </summary>  
  29. [System.Web.Services.WebMethod]  
  30. [System.Web.Script.Services.ScriptMethod]  
  31. public static object GetUploadStatus()  
  32. {  
  33. //獲取文件長度  
  34. UploadInfo info = HttpContext.Current.Session["UploadInfo"] as UploadInfo;  
  35.  
  36. if (info != null && info.IsReady)  
  37. {  
  38. int soFar = info.UploadedLength;  
  39. int total = info.ContentLength;  
  40.  
  41. int percentComplete = (int)Math.Ceiling((double)soFar / (double)total * 100);  
  42. string message = string.Format("上傳 {0} ... {1} of {2} 字節", info.FileName, soFar, total);  
  43.  
  44. // 返回百分比  
  45. return new { percentComplete = percentComplete, message = message };  
  46. }  
  47.  
  48. // 還沒有準備好...  
  49. return null;  
  50. }  
  51.  
  52.  
  53. // --></mce:script>  
  54. </head>  
  55. <body>  
  56. <form id="form1" runat="server">  
  57. <asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true" />  
  58.  
  59. <mce:script type="text/javascript"><!--  
  60. var intervalID = 0;  
  61. var progressBar;  
  62. var fileUpload;  
  63. var form;  
  64. // 進度條  
  65. function pageLoad(){  
  66. $addHandler($get('upload'), 'click', onUploadClick);  
  67. progressBar = $find('progress');  
  68. }  
  69. // 注冊表單  
  70. function register(form, fileUpload){  
  71. this.form = form;  
  72. this.fileUpload = fileUpload;  
  73. }  
  74. //上傳驗證  
  75. function onUploadClick() {  
  76. var vaild = fileUpload.value.length > 0;  
  77. if(vaild){  
  78. $get('upload').disabled = 'disabled';  
  79. updateMessage('info''初始化上傳...');  
  80. //提交上傳  
  81. form.submit();  
  82. // 隱藏frame  
  83. Sys.UI.DomElement.addCssClass($get('uploadFrame'), 'hidden');  
  84. // 0開始顯示進度條  
  85. progressBar.set_percentage(0);  
  86. progressBar.show();  
  87. // 上傳過程  
  88. intervalID = window.setInterval(function(){  
  89. PageMethods.GetUploadStatus(function(result){  
  90. if(result){  
  91. // 更新進度條為新值  
  92. progressBar.set_percentage(result.percentComplete);  
  93. //更新信息  
  94. updateMessage('info', result.message);  
  95.  
  96. if(result == 100){  
  97. // 自動消失  
  98. window.clearInterval(intervalID);  
  99. }  
  100. }  
  101. });  
  102. }, 500);  
  103. }  
  104. else{  
  105. onComplete('error''您必需選擇一個文件');  
  106. }  
  107. }  
  108.  
  109. function onComplete(type, msg){  
  110. // 自動消失  
  111. window.clearInterval(intervalID);  
  112. // 顯示消息  
  113. updateMessage(type, msg);  
  114. // 隱藏進度條  
  115. progressBar.hide();  
  116. progressBar.set_percentage(0);  
  117. // 重新啟用按鈕  
  118. $get('upload').disabled = '';  
  119. // 顯示frame  
  120. Sys.UI.DomElement.removeCssClass($get('uploadFrame'), 'hidden');  
  121. }  
  122. function updateMessage(type, value){  
  123. var status = $get('status');  
  124. status.innerHTML = value;  
  125. // 移除樣式  
  126. status.className = '';  
  127. Sys.UI.DomElement.addCssClass(status, type);  
  128. }  
  129.  
  130.  
  131. // --></mce:script>  
  132.  
  133. <div>  
  134. <div class="upload">  
  135. <h3>文件上傳</h3>  
  136. <div>  
  137. <iframe id="uploadFrame" frameborder="0" scrolling="no" src="Upload.aspx" mce_src="Upload.aspx"></iframe>  
  138. <mb:ProgressControl ID="progress" runat="server" CssClass="lightblue" style="display:none" mce_style="display:none" Value="0" Mode="Manual" Speed=".4" Width="100%" />  
  139. <div>  
  140. <div id="status" class="info">請選擇要上傳的文件</div>  
  141. <div class="commands">  
  142. <input id="upload" type="button" value="上傳" />  
  143. </div>  
  144. </div>  
  145. </div>  
  146. </div>  
  147.  
  148. </div>  
  149. </form>  
  150. </body>  
  151. </html> 

upload.aspx:

 

 
  1. //限制大小 1M  
  2. protected void Page_Load2(object sender, EventArgs e)  
  3. {  
  4. if (this.IsPostBack)  
  5. {  
  6. UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo;  
  7. if (uploadInfo == null)  
  8. {  
  9. // 讓父頁面知道無法處理上傳  
  10. const string js = "window.parent.onComplete('error', '無法上傳文件。請刷新頁面,然后再試一次);";  
  11. ScriptManager.RegisterStartupScript(thistypeof(upload_aspx), "progress", js, true);  
  12. }  
  13. else  
  14. {  
  15. // 讓服務端知道我們還沒有準備好..  
  16. uploadInfo.IsReady = false;  
  17.  
  18. // 上傳驗證  
  19. if (this.fileUpload.PostedFile != null && this.fileUpload.PostedFile.ContentLength > 0  
  20.  
  21. && this.fileUpload.PostedFile.ContentLength < 1048576)// 限制1M  
  22. {  
  23. // 設置路徑  
  24. string path = this.Server.MapPath(@"Uploads");  
  25. string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName);  
  26.  
  27. // 上傳信息  
  28. uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength;  
  29. uploadInfo.FileName = fileName;  
  30. uploadInfo.UploadedLength = 0;  
  31.  
  32. //文件存在 初始化...  
  33. uploadInfo.IsReady = true;  
  34.  
  35. //緩存  
  36. int bufferSize = 1;  
  37. byte[] buffer = new byte[bufferSize];  
  38.  
  39. // 保存字節  
  40. using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create))  
  41. {  
  42. while (uploadInfo.UploadedLength < uploadInfo.ContentLength)  
  43. {  
  44. //從輸入流放進緩沖區  
  45. int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize);  
  46. // 字節寫入文件流  
  47. fs.Write(buffer, 0, bytes);  
  48. // 更新大小  
  49. uploadInfo.UploadedLength += bytes;  
  50.  
  51. // 線程睡眠 上傳就更慢 這樣就可以看到進度條了  
  52. System.Threading.Thread.Sleep(100);  
  53. }  
  54. }  
  55.  
  56. // 刪除.  
  57. File.Delete(Path.Combine(path, fileName));  
  58.  
  59. // 讓父頁面知道已經處理上傳完畢  
  60. const string js = "window.parent.onComplete('success', '{0} 已成功上傳');";  
  61. ScriptManager.RegisterStartupScript(thistypeof(upload_aspx), "progress", string.Format(js, fileName), true);  
  62. }  
  63. else  
  64. {  
  65. if (this.fileUpload.PostedFile.ContentLength >= 1048576)//1M  
  66. {  
  67. const string js = "window.parent.onComplete('error', '超出上傳文件限制大小,請重新選擇');";  
  68. ScriptManager.RegisterStartupScript(thistypeof(upload_aspx), "progress", js, true);  
  69. }  
  70. else  
  71. {  
  72. const string js = "window.parent.onComplete('error', '上傳文件出錯');";  
  73. ScriptManager.RegisterStartupScript(thistypeof(upload_aspx), "progress", js, true);  
  74. }  
  75. }  
  76. uploadInfo.IsReady = false;  
  77. }  
  78. }  
  79. }  
  80.  
  81. // 不限制大小  
  82. protected void Page_Load(object sender, EventArgs e)  
  83. {  
  84. if (this.IsPostBack)  
  85. {  
  86. UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo;  
  87. uploadInfo.IsReady = false;  
  88. if (this.fileUpload.PostedFile != null && this.fileUpload.PostedFile.ContentLength > 0)  
  89. {  
  90. string path = this.Server.MapPath(@"Uploads");  
  91. string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName);  
  92.  
  93. uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength;  
  94. uploadInfo.FileName = fileName;  
  95. uploadInfo.UploadedLength = 0;  
  96.  
  97. uploadInfo.IsReady = true;  
  98.  
  99. int bufferSize = 1;  
  100. byte[] buffer = new byte[bufferSize];  
  101.  
  102. using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create))  
  103. {  
  104. while (uploadInfo.UploadedLength < uploadInfo.ContentLength)  
  105. {  
  106. int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize);  
  107. fs.Write(buffer, 0, bytes);  
  108. uploadInfo.UploadedLength += bytes;  
  109. }  
  110. }  
  111. const string js = "window.parent.onComplete('success', '{0} 已成功上傳');";  
  112. ScriptManager.RegisterStartupScript(thistypeof(upload_aspx), "progress", string.Format(js, fileName), true);  
  113. }  
  114. else  
  115. {  
  116. const string js = "window.parent.onComplete('error', '上傳文件出錯');";  
  117. ScriptManager.RegisterStartupScript(thistypeof(upload_aspx), "progress", js, true);  
  118. }  
  119. uploadInfo.IsReady = false;  
  120. }  

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久亚洲精品不卡| 亚洲男人av在线| 亚洲免费小视频| 亚洲黄色片网站| 国产这里只有精品| 日本高清久久天堂| 日韩精品电影网| www.日韩不卡电影av| 国产视频精品在线| 国产精品久久久久久久久久久不卡| 久久亚洲精品一区二区| 97久久国产精品| 日韩av在线免费观看一区| 欧美精品在线免费播放| 亚洲美女精品成人在线视频| 动漫精品一区二区| 91色在线观看| 欧美午夜丰满在线18影院| 亚洲人成网7777777国产| 国产精品久久久久久久久久久新郎| 日韩av大片在线| 国产精品色午夜在线观看| 成人a免费视频| 国产亚洲精品一区二区| 自拍亚洲一区欧美另类| 热门国产精品亚洲第一区在线| 欧美日韩亚洲激情| 亚洲精品一区二区久| 2019中文字幕全在线观看| 亚洲成色777777女色窝| 欧美精品在线第一页| 欧美日韩亚洲视频一区| 51ⅴ精品国产91久久久久久| 国产精品日日做人人爱| 国产精品第100页| 欧美色视频日本版| 亚洲欧美国产高清va在线播| 亚洲欧美日韩图片| 亚洲性无码av在线| 精品国内产的精品视频在线观看| 91久久精品国产91久久| 热99精品里视频精品| 国产精品黄色影片导航在线观看| 日韩电影在线观看永久视频免费网站| 国产精品吹潮在线观看| 欧美日韩一二三四五区| 亚洲人午夜精品| 日韩美女av在线| 国产91精品在线播放| 日韩综合视频在线观看| 午夜精品福利在线观看| 久久国产精品偷| 久久国产精品偷| 秋霞av国产精品一区| 懂色aⅴ精品一区二区三区蜜月| 久久久久久国产三级电影| 97国产在线观看| 亚洲韩国日本中文字幕| 91免费视频国产| 久久精品国产成人精品| www.亚洲成人| 尤物tv国产一区| 中文字幕精品在线视频| 国产一区欧美二区三区| 国产精品视频公开费视频| 91午夜在线播放| 亚洲国产精品一区二区久| 亚洲精品在线看| 日韩经典第一页| 亚洲成人1234| 欧美贵妇videos办公室| 亚洲自拍av在线| 欧美极品美女视频网站在线观看免费| 亚洲人成在线电影| 高清欧美性猛交xxxx黑人猛交| 欧美性受xxxx白人性爽| 日韩在线免费视频观看| 亚洲自拍另类欧美丝袜| 亚洲精品一区中文| 亚洲女人天堂视频| 成年无码av片在线| 久久久久久久999精品视频| 成人欧美一区二区三区在线湿哒哒| 高清日韩电视剧大全免费播放在线观看| 人人澡人人澡人人看欧美| 日韩av在线资源| 国自产精品手机在线观看视频| 亚洲情综合五月天| 日韩精品免费视频| 国产不卡在线观看| 91精品国产电影| 久久久精品日本| 欧美电影在线观看高清| 国产欧美日韩中文| 亚洲美女视频网站| 日韩欧美在线播放| 国产精品99蜜臀久久不卡二区| 精品国产乱码久久久久久婷婷| 欧美国产高跟鞋裸体秀xxxhd| 久久伊人色综合| 亚洲影院污污.| 欧美日韩中文字幕综合视频| 色久欧美在线视频观看| 日韩亚洲成人av在线| 久久99精品久久久久久琪琪| 欧美日韩在线观看视频小说| 日韩男女性生活视频| 疯狂做受xxxx欧美肥白少妇| 亚洲福利视频免费观看| 日韩一级裸体免费视频| 亚洲精品国产美女| 亚洲欧洲美洲在线综合| 欧美激情在线观看视频| 日本三级韩国三级久久| 精品伊人久久97| 高清欧美性猛交| 国产精品久久久久久久久免费看| 国产精品视频999| 国产精品影片在线观看| 国内精品伊人久久| 国产精品视频在线播放| 国产999精品视频| 欧美激情亚洲自拍| 国产精品久久77777| 日韩精品极品视频免费观看| 中文字幕久久久av一区| 日本国产精品视频| 青青久久av北条麻妃海外网| 欧美在线免费看| 国产精品啪视频| 日韩在线视频导航| 亚州精品天堂中文字幕| 国产一区玩具在线观看| 日韩欧美在线第一页| 国产亚洲综合久久| 久久99国产精品久久久久久久久| 啊v视频在线一区二区三区| 日韩av综合网| 91精品久久久久久久久久久久久| 欧美肥臀大乳一区二区免费视频| 欧美亚洲伦理www| 日韩男女性生活视频| 久久久久久久999精品视频| 久久久在线视频| 中文字幕一精品亚洲无线一区| 91九色综合久久| 欧美高清视频一区二区| 国产精品免费久久久| 国产精品入口免费视| 亚洲自拍偷拍福利| 97精品国产97久久久久久免费| 日韩中文字幕在线精品| 伊人av综合网| 欧美日韩国产一区二区三区| 国产精品久久久久一区二区| 日本19禁啪啪免费观看www| 久久久久久久999精品视频| 91精品国产亚洲| 国产精品影片在线观看| 国产精品久久久久久久天堂| 日韩高清中文字幕| 亚洲成人1234| 亚洲欧美日本精品| 在线看欧美日韩|