佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > asp.net文件上傳帶進(jìn)度條實(shí)現(xiàn)案例(多種風(fēng)格)

asp.net文件上傳帶進(jìn)度條實(shí)現(xiàn)案例(多種風(fēng)格)

熱門標(biāo)簽:服務(wù)器配置 集中運(yùn)營管理辦法 阿里云 百度競價(jià)排名 地方門戶網(wǎng)站 科大訊飛語音識別系統(tǒng) 硅谷的囚徒呼叫中心 網(wǎng)站排名優(yōu)化

先飽飽眼福:

在之前的文章中也有類似帶進(jìn)度條文件傳送的案例,大家可以翻閱之前的文章對知識點(diǎn)進(jìn)行擴(kuò)充。

部分代碼:

%@ Page Language="C#" %> 
%@ Register Assembly="MattBerseth.WebControls.AJAX" Namespace="MattBerseth.WebControls.AJAX.Progress" TagPrefix="mb" %> 
 
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
 
html xmlns="http://www.w3.org/1999/xhtml"> 
head runat="server"> 
 title>Untitled Page/title> 
 link rel="Stylesheet" href="_assets/css/progress.css" mce_href="_assets/css/progress.css" /> 
 link rel="Stylesheet" href="_assets/css/upload.css" mce_href="_assets/css/upload.css" /> 
 mce:style type="text/css">!-- 
 BODY{ font-family:Arial, Sans-Serif; font-size:12px;} 
 
-->/mce:style>style type="text/css" mce_bogus="1"> BODY{ font-family:Arial, Sans-Serif; font-size:12px;} 
 /style> 
 mce:script type="text/C#" runat="server">!-- 
 
 protected void Page_Load(object sender, EventArgs args) 
 { 
 if (!this.IsPostBack) 
 { 
 this.Session["UploadInfo"] = new UploadInfo { IsReady = false }; 
 } 
 } 
 
 /// summary> 
 /// 
 /// /summary> 
 [System.Web.Services.WebMethod] 
 [System.Web.Script.Services.ScriptMethod] 
 public static object GetUploadStatus() 
 { 
 //獲取文件長度 
 UploadInfo info = HttpContext.Current.Session["UploadInfo"] as UploadInfo; 
 
 if (info != null  info.IsReady) 
 { 
 int soFar = info.UploadedLength; 
 int total = info.ContentLength; 
 
 int percentComplete = (int)Math.Ceiling((double)soFar / (double)total * 100); 
 string message = string.Format("上傳 {0} ... {1} of {2} 字節(jié)", info.FileName, soFar, total); 
 
 // 返回百分比 
 return new { percentComplete = percentComplete, message = message }; 
 } 
 
 // 還沒有準(zhǔn)備好... 
 return null; 
 } 
 
 
// -->/mce:script> 
/head> 
body> 
 form id="form1" runat="server"> 
 asp:ScriptManager ID="scriptManager" runat="server" EnablePageMethods="true" /> 
 
 mce:script type="text/javascript">!-- 
 var intervalID = 0; 
 var progressBar; 
 var fileUpload; 
 var form; 
 // 進(jìn)度條 
 function pageLoad(){ 
 $addHandler($get('upload'), 'click', onUploadClick); 
 progressBar = $find('progress'); 
 } 
 // 注冊表單 
 function register(form, fileUpload){ 
 this.form = form; 
 this.fileUpload = fileUpload; 
 } 
 //上傳驗(yàn)證 
 function onUploadClick() { 
 var vaild = fileUpload.value.length > 0; 
 if(vaild){ 
 $get('upload').disabled = 'disabled'; 
 updateMessage('info', '初始化上傳...'); 
 //提交上傳 
 form.submit(); 
 // 隱藏frame 
 Sys.UI.DomElement.addCssClass($get('uploadFrame'), 'hidden'); 
 // 0開始顯示進(jìn)度條 
 progressBar.set_percentage(0); 
 progressBar.show(); 
 // 上傳過程 
 intervalID = window.setInterval(function(){ 
 PageMethods.GetUploadStatus(function(result){ 
 if(result){ 
 // 更新進(jìn)度條為新值 
 progressBar.set_percentage(result.percentComplete); 
 //更新信息 
 updateMessage('info', result.message); 
 
 if(result == 100){ 
 // 自動(dòng)消失 
 window.clearInterval(intervalID); 
 } 
 } 
 }); 
 }, 500); 
 } 
 else{ 
 onComplete('error', '您必需選擇一個(gè)文件'); 
 } 
 } 
 
 function onComplete(type, msg){ 
 // 自動(dòng)消失 
 window.clearInterval(intervalID); 
 // 顯示消息 
 updateMessage(type, msg); 
 // 隱藏進(jìn)度條 
 progressBar.hide(); 
 progressBar.set_percentage(0); 
 // 重新啟用按鈕 
 $get('upload').disabled = ''; 
 // 顯示frame 
 Sys.UI.DomElement.removeCssClass($get('uploadFrame'), 'hidden'); 
 } 
 function updateMessage(type, value){ 
 var status = $get('status'); 
 status.innerHTML = value; 
 // 移除樣式 
 status.className = ''; 
 Sys.UI.DomElement.addCssClass(status, type); 
 } 
 
 
// -->/mce:script> 
 
 div> 
 div class="upload"> 
 h3>文件上傳/h3> 
 div> 
 iframe id="uploadFrame" frameborder="0" scrolling="no" src="Upload.aspx" mce_src="Upload.aspx">/iframe> 
 mb:ProgressControl ID="progress" runat="server" CssClass="lightblue" style="display:none" mce_style="display:none" Value="0" Mode="Manual" Speed=".4" Width="100%" /> 
 div> 
 div id="status" class="info">請選擇要上傳的文件/div> 
 div class="commands"> 
 input id="upload" type="button" value="上傳" /> 
 /div> 
 /div> 
 /div> 
 /div> 
 
 /div> 
 /form> 
/body> 
/html> 

 upload.aspx:

//限制大小 1M 
 protected void Page_Load2(object sender, EventArgs e) 
 { 
 if (this.IsPostBack) 
 { 
 UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo; 
 if (uploadInfo == null) 
 { 
 // 讓父頁面知道無法處理上傳 
 const string js = "window.parent.onComplete('error', '無法上傳文件。請刷新頁面,然后再試一次);"; 
 ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
 } 
 else 
 { 
 // 讓服務(wù)端知道我們還沒有準(zhǔn)備好.. 
 uploadInfo.IsReady = false; 
 
 // 上傳驗(yàn)證 
 if (this.fileUpload.PostedFile != null  this.fileUpload.PostedFile.ContentLength > 0 
 
  this.fileUpload.PostedFile.ContentLength  1048576)// 限制1M 
 { 
 // 設(shè)置路徑 
 string path = this.Server.MapPath(@"Uploads"); 
 string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName); 
 
 // 上傳信息 
 uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength; 
 uploadInfo.FileName = fileName; 
 uploadInfo.UploadedLength = 0; 
 
 //文件存在 初始化... 
 uploadInfo.IsReady = true; 
 
 //緩存 
 int bufferSize = 1; 
 byte[] buffer = new byte[bufferSize]; 
 
 // 保存字節(jié) 
 using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create)) 
 { 
 while (uploadInfo.UploadedLength  uploadInfo.ContentLength) 
 { 
 //從輸入流放進(jìn)緩沖區(qū) 
 int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize); 
 // 字節(jié)寫入文件流 
 fs.Write(buffer, 0, bytes); 
 // 更新大小 
 uploadInfo.UploadedLength += bytes; 
 
 // 線程睡眠 上傳就更慢 這樣就可以看到進(jìn)度條了 
 System.Threading.Thread.Sleep(100); 
 } 
 } 
 
 // 刪除. 
 File.Delete(Path.Combine(path, fileName)); 
 
 // 讓父頁面知道已經(jīng)處理上傳完畢 
 const string js = "window.parent.onComplete('success', '{0} 已成功上傳');"; 
 ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, fileName), true); 
 } 
 else 
 { 
 if (this.fileUpload.PostedFile.ContentLength >= 1048576)//1M 
 { 
 const string js = "window.parent.onComplete('error', '超出上傳文件限制大小,請重新選擇');"; 
 ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
 } 
 else 
 { 
 const string js = "window.parent.onComplete('error', '上傳文件出錯(cuò)');"; 
 ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
 } 
 } 
 uploadInfo.IsReady = false; 
 } 
 } 
 } 
 
 // 不限制大小 
 protected void Page_Load(object sender, EventArgs e) 
 { 
 if (this.IsPostBack) 
 { 
 UploadInfo uploadInfo = this.Session["UploadInfo"] as UploadInfo; 
 uploadInfo.IsReady = false; 
 if (this.fileUpload.PostedFile != null  this.fileUpload.PostedFile.ContentLength > 0) 
 { 
 string path = this.Server.MapPath(@"Uploads"); 
 string fileName = Path.GetFileName(this.fileUpload.PostedFile.FileName); 
 
 uploadInfo.ContentLength = this.fileUpload.PostedFile.ContentLength; 
 uploadInfo.FileName = fileName; 
 uploadInfo.UploadedLength = 0; 
 
 uploadInfo.IsReady = true; 
 
 int bufferSize = 1; 
 byte[] buffer = new byte[bufferSize]; 
 
 using (FileStream fs = new FileStream(Path.Combine(path, fileName), FileMode.Create)) 
 { 
 while (uploadInfo.UploadedLength  uploadInfo.ContentLength) 
 { 
 int bytes = this.fileUpload.PostedFile.InputStream.Read(buffer, 0, bufferSize); 
 fs.Write(buffer, 0, bytes); 
 uploadInfo.UploadedLength += bytes; 
 } 
 } 
 const string js = "window.parent.onComplete('success', '{0} 已成功上傳');"; 
 ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", string.Format(js, fileName), true); 
 } 
 else 
 { 
 const string js = "window.parent.onComplete('error', '上傳文件出錯(cuò)');"; 
 ScriptManager.RegisterStartupScript(this, typeof(upload_aspx), "progress", js, true); 
 } 
 uploadInfo.IsReady = false; 
 } 
 } 

 代碼就不貼完了,直接上干貨,親,這可是免郵的哦!下載地址

您可能感興趣的文章:
  • ASP.NET實(shí)現(xiàn)進(jìn)度條效果
  • asp.net mvc 實(shí)現(xiàn)文件上傳帶進(jìn)度條的思路與方法
  • asp.net單文件帶進(jìn)度條上傳的解決方案
  • Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
  • asp.net(c#)開發(fā)中的文件上傳組件uploadify的使用方法(帶進(jìn)度條)
  • asp.net 在客戶端顯示服務(wù)器端任務(wù)處理進(jìn)度條的探討
  • asp.net 生成靜態(tài)頁時(shí)的進(jìn)度條顯示
  • Asp.net基于ajax和jquery-ui實(shí)現(xiàn)進(jìn)度條

標(biāo)簽:廣西 開封 烏蘭察布 甘孜 隨州 梧州 西雙版納 威海

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net文件上傳帶進(jìn)度條實(shí)現(xiàn)案例(多種風(fēng)格)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    蚌埠市| 寿宁县| 朝阳区| 牡丹江市| 牙克石市| 林西县| 文化| 扶绥县| 定南县| 卓尼县| 双桥区| 达拉特旗| 沅江市| 芦山县| 秀山| 南漳县| 乐东| 永吉县| 沅江市| 井研县| 囊谦县| 寻甸| 曲周县| 阿克| 秭归县| 桑植县| 姜堰市| 积石山| 千阳县| 上高县| 嘉峪关市| 德庆县| 藁城市| 荣成市| 金塔县| 绥化市| 邛崃市| 汾阳市| 多伦县| 浑源县| 灵寿县|