ivaneeo's blog

          自由的力量,自由的生活。

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

          瀏覽-選擇文件-點(diǎn)擊 “上傳 ”后,效果如下:

          彈出透明UI遮罩層 并顯示上傳這個(gè)過程 我這里設(shè)置太透明了 效果不是很立體

          曾祥展

          文件結(jié)構(gòu)如圖:

          曾祥展

           

          說明:用到“高山來客”的大文件上傳組件 http://www.cnblogs.com/bashan/archive/2008/05/23/1206095.html

          以及Newtonsoft.Json.dll Json字符串反序列化為對(duì)象 http://james.newtonking.com/projects/json-net.aspx

          jquery.blockUI.js 彈出透明遮罩層 http://malsup.com/jquery/block/

          jquery.form.js   表單驗(yàn)證Ajax提交 

          參照了“螞蟻飛了”的文章 多謝多謝 http://blog.csdn.net/jetsteven

           

           

          HTML:

          <form id="uploadForm" runat="server" enctype="multipart/form-data">   <div id="uploadfield"  style="width:600px; height:500px">    <input id="File1" type="file" runat="server" />    <asp:Button ID="Button1" runat="server"  Text="上傳" onclick="Button1_Click" />     <p>文件上傳進(jìn)度條</p>     <p>文件上傳進(jìn)度條</p>     <p>文件上傳進(jìn)度條</p>     <p>文件上傳進(jìn)度條</p>     <p>文件上傳進(jìn)度條</p>     <p>文件上傳進(jìn)度條</p>      <p>文件上傳進(jìn)度條</p>    </div>                    <div id="ui"  style="display:none"  >      <div id="output" > </div>        <div id="progressbar"class="ui-progressbar ui-widget ui-widget-content ui-corner-all" style="width:296px; height:20px;"></div>    <input id="btn_cancel" type="button" value="取消上傳" />   </div> </form>
           
          js:
           
          var inte; $(function() { $('#uploadForm').submit(function() {     return false; });  $('#uploadForm').ajaxForm({ //這里調(diào)用jquery.form.js表單注冊(cè)方法     beforeSubmit: function(a, f, o) {//提交前的處理         o.dataType = "json";         $('#uploadfield').block({ message: $('#ui'), css: { width: '300px', border: '#b9dcfe 1px solid',padding: '0.5em 0.2em'  }         });         inte = self.setInterval("getprogress()", 500);     } });  $('#btn_cancel').click(function() {     var uploadid = $("#UploadID").val();     $.ajax({         type: "POST",         dataType: "json",         async: false, //ajax的請(qǐng)求時(shí)同步 只有一個(gè)線程         url: "upload_ajax.ashx",         data: "UploadID=" + uploadid + "&cancel=true",         success: function(obj) {             $("#output").html(obj.msg);             inte = self.clearInterval(inte);             $('#uploadfield').unblock();                            }     }); }); });  function getprogress() { var uploadid = $("#UploadID").val() $.ajax({     type: "POST",     dataType: "json",     async: false,     url: "upload_ajax.ashx",     data: "UploadID=" + uploadid,     success: function(obj) {     var p = obj.msg.Readedlength / obj.msg.TotalLength * 100;     var info = "<FONT color=Green> 當(dāng)前上傳文件:</FONT>" + obj.msg.CurrentFile;     info += "<br><FONT color=Green>" + obj.msg.FormatStatus + ":</FONT>" + obj.msg.Status;     info += "<br><FONT color=Green>文件大小:</FONT>" + obj.msg.TotalLength;     info += "<br><FONT color=Green>速度:</FONT>" + obj.msg.FormatRatio;     info += "<br><FONT color=Green>剩余時(shí)間:</FONT>" + obj.msg.LeftTime;       $("#output").html(info);     $("#progressbar").progressbar({ value: 0 }); //初始化     $("#progressbar").progressbar("option", "value", p);     $("#progressbar div").html(p.toFixed(2) + "%");     $("#progressbar div").addClass("percentText");     if (obj.msg.Status == 4) {         inte = self.clearInterval(inte);         $('#uploadfield').unblock();      }            } }); }
           
          交互過程代碼:
           
          <%@ WebHandler Language="C#" Class="progressbar" %>  using System; using System.Web;  using BigFileUpload;//大文件引用命名空間 using Newtonsoft.Json;//對(duì)象到JSON的相互轉(zhuǎn)換 using System.Text.RegularExpressions;//正則  public class progressbar : IHttpHandler {      private string template = "{{statue:'{0}',msg:{1}}}";    public void ProcessRequest(HttpContext context)    {        context.Response.ContentType = "text/plain";        try       {        string guid = context.Request["UploadID"];        string cancel =context.Request["cancel"];     UploadContext c = UploadContextFactory.GetUploadContext(guid);       if (!string.IsNullOrEmpty(cancel))     {                    c.Abort=true;                    throw new Exception("用戶取消");        }        string json = Newtonsoft.Json.JsonConvert.SerializeObject(c);                    WriteResultJson(1, json, context,template);                 }catch (Exception err)        {            WriteResultJson(0, err.Message, context);        }    }      public static void WriteResultJson(int resultno, string description, HttpContext context) {     WriteResultJson(resultno, description, context, "{{statue:'{0}',msg:'{1}'}}"); }  public static void WriteResultJson(int resultno, string description, HttpContext context, string template) {     description = ClearBR(ReplaceString(description, "'", "|", false));     context.Response.Write(string.Format(template, resultno, description)); }  public static string ClearBR(string str) {     Regex r = null;     Match m = null;     r = new Regex(@"(\r|\n)", RegexOptions.IgnoreCase);     for (m = r.Match(str); m.Success; m = m.NextMatch())     {         str = str.Replace(m.Groups[0].ToString(), @"\n");     }     return str; }  public static string ReplaceString(string SourceString, string SearchString, string ReplaceString, bool IsCaseInsensetive) {     return Regex.Replace(SourceString, Regex.Escape(SearchString), ReplaceString, IsCaseInsensetive ? RegexOptions.IgnoreCase : RegexOptions.None); }    public bool IsReusable    {        get       {         return false;        }    }  }         
          轉(zhuǎn)
          http://www.cnblogs.com/jcomet/archive/2010/03/24/1693467.html
          posted on 2012-02-29 20:42 ivaneeo 閱讀(594) 評(píng)論(0)  編輯  收藏 所屬分類: web2.0

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 南雄市| 合山市| 罗山县| 合阳县| 汉沽区| 灵山县| 柞水县| 信丰县| 成都市| 卢龙县| 仁化县| 永德县| 若尔盖县| 巨鹿县| 法库县| 阿巴嘎旗| 资源县| 洱源县| 淅川县| 磴口县| 巴彦县| 紫云| 安宁市| 淮阳县| 肇源县| 津南区| 玉溪市| 海林市| 迭部县| 宁海县| 千阳县| 同江市| 纳雍县| 石景山区| 高青县| 平昌县| 南投市| 镇赉县| 红安县| 台中县| 阳曲县|