麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > .NET > 正文

解決uploadify使用時session發(fā)生丟失問題的方法

2024-07-10 13:30:33
字體:
供稿:網(wǎng)友
這篇文章主要為大家詳細介紹了uploadify使用時發(fā)現(xiàn)session發(fā)生丟失問題的解決方法,遇到過類似問題的朋友可以參考本文進行解決
 

今天在使用uploadify時發(fā)現(xiàn)session會發(fā)生丟失的情況,經(jīng)過一番研究發(fā)現(xiàn),其丟失并不是真正的丟失,而是在使用Flash上傳控件的時候使用的session機制和asp.net中的不相同。為解決這個問題使用兩種方案,下面進行介紹

第一種:修改Gobal
前臺aspx頁面:

$("#uploadify").uploadify({         'uploader': '/LZKS/Handler/BigFileUpLoadHandler.ashx',         'swf': '/LZKS/Scripts/uploadify/uploadify.swf',         'cancelImage': '/LZKS/Scripts/uploadify/cancel.png',         'queueID': 'fileQueue',         //'auto': false,         'multi': true,         'buttonText': '文件上傳',         'formData': { 'ASPSESSID': ASPSESSID, 'AUTHID': auth },         'onSelect': function (file) {           $('#uploadify').uploadifySettings('formData', { 'ASPSESSID': ASPSESSID, 'AUTHID': auth });           alert(formDate);         },         'onComplete': function (file, data, response) {         },          'onQueueComplete': function () {           alert("上傳完成!");           $('#fileQueue').attr('style', 'visibility :hidden');         },         'onSelectError': function (file, errorCode, errorMsg) {           $('#fileQueue').attr('style', 'visibility :hidden');         },         'onUploadStart': function (file) {           $('#fileQueue').attr('style', 'top:200px;left:400px;width:400px;height :400px;visibility :visible');         }       });     }); 

接著修改Gobal中的代碼:

protected void Application_BeginRequest(object sender, EventArgs e)     {       /* we guess at this point session is not already retrieved by application so we recreate cookie with the session id... */       try       {         string session_param_name = "ASPSESSID";         string session_cookie_name = "ASP.NET_SessionId";          if (HttpContext.Current.Request.Form[session_param_name] != null)         {           UpdateCookie(session_cookie_name, HttpContext.Current.Request.Form[session_param_name]);         }         else if (HttpContext.Current.Request.QueryString[session_param_name] != null)         {           UpdateCookie(session_cookie_name, HttpContext.Current.Request.QueryString[session_param_name]);         }       }       catch       {       }        try       {         string auth_param_name = "AUTHID";         string auth_cookie_name = FormsAuthentication.FormsCookieName;          if (HttpContext.Current.Request.Form[auth_param_name] != null)         {           UpdateCookie(auth_cookie_name, HttpContext.Current.Request.Form[auth_param_name]);         }         else if (HttpContext.Current.Request.QueryString[auth_param_name] != null)         {           UpdateCookie(auth_cookie_name, HttpContext.Current.Request.QueryString[auth_param_name]);         }        }       catch       {       }     }      private void UpdateCookie(string cookie_name, string cookie_value)     {       HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);       if (null == cookie)       {         cookie = new HttpCookie(cookie_name);       }       cookie.Value = cookie_value;       HttpContext.Current.Request.Cookies.Set(cookie);     } 

在JS加載前面定義下面兩個變量

var auth = "<% = Request.Cookies[FormsAuthentication.FormsCookieName]==null ? string.Empty : Request.Cookies[FormsAuthentication.FormsCookieName].Value %>";  var ASPSESSID = "<%= Session.SessionID %>"; 

Handler文件代碼如下:  

 public class BigFileUpLoadHandler : IHttpHandler, IRequiresSessionState   {     DALFile Fdal = new DALFile();     public void ProcessRequest(HttpContext context)     {       context.Response.ContentType = "text/plain";       VideoUpLoad(context, CLSOFT.Web.LZKS.Edu.Globe.filename);     }     public void VideoUpLoad(HttpContext context, string fileFolderName)     {       context.Response.Charset = "utf-8";       string aaaaaaa=context.Request.QueryString["sessionid"];       HttpPostedFile file = context.Request.Files["Filedata"];       string uploadPath = HttpContext.Current.Server.MapPath(UploadFileCommon.CreateDir(fileFolderName));       if (file != null)       {         if (!Directory.Exists(uploadPath))         {           Directory.CreateDirectory(uploadPath);         }         Model.ModelFile model = new Model.ModelFile();         model.File_ID = Guid.NewGuid().ToString();         model.File_Name = file.FileName;         model.File_Path = UploadFileCommon.CreateDir(fileFolderName);         model.File_Size = file.ContentLength;         model.File_Extension = file.FileName.Substring(file.FileName.LastIndexOf('.') + 1);         model.File_Date = DateTime.Now;         model.File_CurrentMan = CLSOFT.Web.LZKS.Edu.Globe.name;         file.SaveAs(uploadPath + model.File_Name);                List<Model.ModelFile> list = null;         if (context.Session["File"] == null)         {           list = new List<Model.ModelFile>();         }         else         {           list = context.Session["File"] as List<Model.ModelFile>;         }         list.Add(model);         context.Session.Add("File", list);       }       else       {         context.Response.Write("0");       }      } 

這段代碼的功能是將多文件的信息存到context.Session["File"] as List<Model.ModelFileModel.ModelFile>為文件信息類 實現(xiàn)批量上傳的信息給Session  
第二種方案:直接向后臺傳遞session值

Ext.onReady(function () {     Ext.QuickTips.init();     <%--JQuery裝載函數(shù)--%>       $("#uploadify").uploadify({         'uploader': '../Uploadify-v2.1.4/uploadify.swf',//上傳swf相對路徑         'script': '../Service/FileUploadHelper.ashx',//后臺上傳處理呈現(xiàn)         'cancelImg': '../Uploadify-v2.1.4/cancel.png',//取消上傳按鈕相對路徑         'checkExisting':true,//服務(wù)端重復(fù)文件檢測         'folder': '../UploadFile/',//上傳目錄         'fileExt':'*.jpg;*.png;*.gif;*.bmp',//允許上傳的文件格式         'fileDesc':'jpg、png、gif、bmp',//文件選擇時顯示的提示         'queueID': 'fileQueue',//上傳容器         'auto': false,         'multi': false,//只允許單文件上傳         'buttonText':'Choose File',         'scriptData': { 'name': '', 'type': '','length':'' },//在加載時此處是null         //'onInit':function(){alert("1");},//初始化工作,在Extjs的嵌套中最先觸發(fā)的函數(shù)         //選擇一個文件后觸發(fā)         'onSelect': function(event, queueID, fileObj) { //          alert("唯一標識:" + queueID + "/r/n" + //          "文件名:" + fileObj.name + "/r/n" + //          "文件大小:" + fileObj.size + "/r/n" + //          "創(chuàng)建時間:" + fileObj.creationDate + "/r/n" + //          "最后修改時間:" + fileObj.modificationDate + "/r/n" + //          "文件類型:" + fileObj.type);            $("#uploadify").uploadifySettings("scriptData", { "length": fileObj.size}); //動態(tài)更新配(執(zhí)行此處時可獲得值)         },         //上傳單個文件接收后觸發(fā)         'onComplete': function (event, queueID, fileObj, response, data) {            var value = response;            if(value==1){            Ext.Msg.alert("提示","上傳成功");            }            else if(value==0){            Ext.Msg.alert("提示","請選擇上傳文件");            }            else if(value==-1){             Ext.Msg.alert("提示","已存在該文件");            }                      }       });     <%-- jQuery裝載函數(shù)結(jié)束--%> 

動態(tài)的傳遞參數(shù),并判斷是否合法

//動態(tài)加載   function loadFileType(){   //檢測   var medianame=Ext.getCmp("eName").getValue();   if(medianame.trim()==""){     Ext.Msg.alert("提示","媒體名稱不能為空");     return;   }   var filetype=Ext.getCmp("eType").getValue();   if(filetype=="" || filetype<0){     Ext.Msg.alert("提示","請選擇媒體類型");     return;   }   //動態(tài)更新配(執(zhí)行此處時可獲得值)   $("#uploadify").uploadifySettings("scriptData", { "name": medianame,"type":filetype,"sessionuserid":<%=session_userid %> });   //上傳開始   $('#uploadify').uploadifyUpload();   }   

<%=session_userid %>是取后臺的一個變量,該變量在加載頁面的時候獲得了session值。當然也可以在前臺直接獲得session值。  
后臺處理程序:

public class FileUploadHelper : IRequiresSessionState, IHttpHandler {    int nCurrentUserID = -1;   public void ProcessRequest(HttpContext context)   {     try     {       nCurrentUserID = WebUtil.GetCurrentUserID();//該處的session值得不到     }     catch (Exception)     {     }     context.Response.ContentType = "text/plain";     context.Response.Charset = "utf-8";      string strFilename = string.Empty;     int nFiletype = 0;     float fFilelength = 0;     string strFileExt = string.Empty;     string strFilePath = string.Empty;     if (context.Request["sessionuserid"] != null)     {       nCurrentUserID = Convert.ToInt32(context.Request["sessionuserid"].ToString());     }     if (context.Request["name"] != null)//獲得文件名(動態(tài)參數(shù))     {       strFilename = context.Request["name"].ToString();     }     if (context.Request["type"] != null)//獲得文件類型(動態(tài)參數(shù))     {       nFiletype = Convert.ToInt32(context.Request["type"].ToString());     }     if (context.Request["length"] != null)//獲得文件長度(動態(tài)參數(shù))     {       int nEmptFileLength = Convert.ToInt32(context.Request["length"].ToString());       fFilelength = (float)nEmptFileLength / 1024;     }     if (context.Request["Filename"] != null)//獲得文件名(系統(tǒng)自帶)     {       string filename = context.Request["Filename"].ToString();       strFileExt = Path.GetExtension(filename).ToLower();//獲得后綴名     }     HttpPostedFile file = context.Request.Files["Filedata"];     string uploadPath = HttpContext.Current.Server.MapPath(@context.Request["folder"]);     //根據(jù)當前日期創(chuàng)建一個文件夾     string dirName = System.DateTime.Now.ToString("yyyyMMdd");     uploadPath += dirName;      string tmpRootDir = context.Server.MapPath(System.Web.HttpContext.Current.Request.ApplicationPath.ToString());//獲取程序根目錄      if (file != null)     {       //判斷目錄是否存在       if (!Directory.Exists(uploadPath))       {         Directory.CreateDirectory(uploadPath);       }       //判斷文件是否存在       strFilePath = uploadPath + "//" + strFilename + strFileExt;       if (!File.Exists(strFilePath))       {         //寫數(shù)據(jù)庫成功保存文件         Media model = new Media();         int newMediaID = -1;         model.media_type = nFiletype;         model.media_name = strFilename + strFileExt;         model.file_path = strFilePath.Replace(tmpRootDir, "");//保存相對目錄         model.file_length = fFilelength;         newMediaID = MediaBLL.AddMadia(model, nCurrentUserID);         if (newMediaID > -1)//數(shù)據(jù)庫寫入成功         {           //保存文件           file.SaveAs(strFilePath);           //下面這句代碼缺少的話,上傳成功后上傳隊列的顯示不會自動消失           context.Response.Write("1");         }       }       else       {         context.Response.Write("-1");       }     }     else     {       context.Response.Write("0");     }   } 

這樣就可以解決該問題了。

希望這兩種方法都能幫助大家順利解決session丟失問題,謝謝大家的閱讀。



注:相關(guān)教程知識閱讀請移步到ASP.NET教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩av影片在线观看 | av成人免费看 | 毛片免费视频观看 | 中文字幕一区2区 | 午夜视频在线观 | 91成人在线免费观看 | 在线成人免费网站 | 久久91精品国产91久久yfo | 法国性经典xxxhd | 在线成人免费av | 色婷婷久久久久久 | 黄色视屏免费看 | 日韩精品一区二区三区中文 | 黑人一级片视频 | 中文在线国产 | 精品国产一区二区三区久久久 | 日本不卡视频在线观看 | 中文字幕在线观看二区 | 国产一区视频观看 | 欧美3p激情一区二区三区猛视频 | 久久久综合视频 | 黄色久| 午夜小电影 | av免费av | 国产二区三区视频 | 久色免费视频 | av最新在线 | 操碰| 斗罗破苍穹在线观看免费完整观看 | 成人免费av在线播放 | 欧美精品成人 | 中国精品久久 | 成人国产精品久久 | 成人爽a毛片免费啪啪红桃视频 | 成人男女激情免费视频 | 色av综合在线 | 国产一区二区免费在线观看视频 | 国产精品野外av久久久 | 狠狠干天天 | 欧美一级一片 | 黄色小视频在线免费看 |