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

首頁 > 編程 > .NET > 正文

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

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

今天在使用uploadify時發現session會發生丟失的情況,經過一番研究發現,其丟失并不是真正的丟失,而是在使用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>為文件信息類 實現批量上傳的信息給Session  
第二種方案:直接向后臺傳遞session值

Ext.onReady(function () {     Ext.QuickTips.init();     <%--JQuery裝載函數--%>       $("#uploadify").uploadify({         'uploader': '../Uploadify-v2.1.4/uploadify.swf',//上傳swf相對路徑         'script': '../Service/FileUploadHelper.ashx',//后臺上傳處理呈現         'cancelImg': '../Uploadify-v2.1.4/cancel.png',//取消上傳按鈕相對路徑         'checkExisting':true,//服務端重復文件檢測         '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的嵌套中最先觸發的函數         //選擇一個文件后觸發         'onSelect': function(event, queueID, fileObj) { //          alert("唯一標識:" + queueID + "/r/n" + //          "文件名:" + fileObj.name + "/r/n" + //          "文件大小:" + fileObj.size + "/r/n" + //          "創建時間:" + fileObj.creationDate + "/r/n" + //          "最后修改時間:" + fileObj.modificationDate + "/r/n" + //          "文件類型:" + fileObj.type);            $("#uploadify").uploadifySettings("scriptData", { "length": fileObj.size}); //動態更新配(執行此處時可獲得值)         },         //上傳單個文件接收后觸發         '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裝載函數結束--%> 

動態的傳遞參數,并判斷是否合法

//動態加載   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;   }   //動態更新配(執行此處時可獲得值)   $("#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)//獲得文件名(動態參數)     {       strFilename = context.Request["name"].ToString();     }     if (context.Request["type"] != null)//獲得文件類型(動態參數)     {       nFiletype = Convert.ToInt32(context.Request["type"].ToString());     }     if (context.Request["length"] != null)//獲得文件長度(動態參數)     {       int nEmptFileLength = Convert.ToInt32(context.Request["length"].ToString());       fFilelength = (float)nEmptFileLength / 1024;     }     if (context.Request["Filename"] != null)//獲得文件名(系統自帶)     {       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"]);     //根據當前日期創建一個文件夾     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))       {         //寫數據庫成功保存文件         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)//數據庫寫入成功         {           //保存文件           file.SaveAs(strFilePath);           //下面這句代碼缺少的話,上傳成功后上傳隊列的顯示不會自動消失           context.Response.Write("1");         }       }       else       {         context.Response.Write("-1");       }     }     else     {       context.Response.Write("0");     }   } 

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

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



注:相關教程知識閱讀請移步到ASP.NET教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产一区二区三区四区| 亚洲黄色www网站| 91最新在线免费观看| 视频在线观看99| 97视频在线观看免费高清完整版在线观看| 国产精品嫩草影院久久久| 欧美精品免费在线观看| 日韩欧美亚洲国产一区| 久久夜色精品国产亚洲aⅴ| 亚洲人成欧美中文字幕| 韩剧1988在线观看免费完整版| 亚洲最大福利视频| 精品国产福利在线| 97精品欧美一区二区三区| 久久深夜福利免费观看| 中文字幕一区二区三区电影| 亚洲色图35p| 国产精品青草久久久久福利99| 欧美黑人一级爽快片淫片高清| 7777精品久久久久久| 懂色aⅴ精品一区二区三区蜜月| 欧美尺度大的性做爰视频| 5566日本婷婷色中文字幕97| 久久精品最新地址| 亚洲在线免费观看| 亚洲高清av在线| 亚洲新声在线观看| 51色欧美片视频在线观看| 国产成人精品a视频一区www| 亚洲国产成人91精品| 精品国产乱码久久久久久婷婷| 亚洲白拍色综合图区| 日韩av免费在线看| 97成人精品视频在线观看| 亚洲免费成人av电影| 国产日产久久高清欧美一区| 欧美中文字幕在线| 精品久久久久久国产| 日韩在线不卡视频| 久久精品国产视频| 最新91在线视频| 亚洲一区二区久久| 欧美理论电影在线播放| 久久人人爽人人爽人人片av高清| 在线播放亚洲激情| 91美女高潮出水| 午夜精品蜜臀一区二区三区免费| 中文字幕日韩视频| 成人在线中文字幕| 久久香蕉国产线看观看av| 一个色综合导航| 久久精品人人爽| 亚洲国产欧美一区| 午夜精品在线视频| 久久国产精品影片| 欧美国产日韩在线| 97欧美精品一区二区三区| 18一19gay欧美视频网站| 亚洲第一区中文99精品| 最新日韩中文字幕| 国产精品久久久久高潮| 亚洲国产成人精品久久| 欧美色道久久88综合亚洲精品| 精品久久久久久| 久久99久久99精品免观看粉嫩| 亚洲电影在线观看| 国产91av在线| 精品久久久视频| 不卡伊人av在线播放| 日韩日本欧美亚洲| 久久伊人色综合| 丝袜美腿精品国产二区| 国外视频精品毛片| 色综合久综合久久综合久鬼88| 日韩亚洲精品视频| 欧美日韩午夜剧场| 欧美人与性动交| 成人疯狂猛交xxx| 国产精品天天狠天天看| 欧美大成色www永久网站婷| 国产在线精品成人一区二区三区| 亚洲男人7777| 揄拍成人国产精品视频| 91亚洲va在线va天堂va国| 国产精品88a∨| 精品久久在线播放| 久久躁狠狠躁夜夜爽| 狠狠做深爱婷婷久久综合一区| 亚洲一级一级97网| 亚洲韩国日本中文字幕| 日韩在线观看免费高清| 亚洲精品久久久久中文字幕二区| 日韩国产一区三区| 成人在线一区二区| 中文字幕综合在线| 久久久久久av| 欧美激情影音先锋| 久久免费精品日本久久中文字幕| 亚洲国产精品国自产拍av秋霞| 亚州欧美日韩中文视频| 色爱精品视频一区| 欧美亚洲国产日韩2020| 亚洲中国色老太| 欧美成人精品在线播放| 成年无码av片在线| 一个色综合导航| 最新中文字幕亚洲| 51ⅴ精品国产91久久久久久| 久久久久久久久91| 国产精品久久久久久亚洲调教| 国产欧美日韩高清| 另类少妇人与禽zozz0性伦| 亚洲国产中文字幕在线观看| 国产日产欧美精品| 亚洲欧美日韩一区在线| 中文字幕日韩在线播放| 日韩大陆毛片av| 国产91久久婷婷一区二区| 欧美性精品220| 欧美性猛交xxxx久久久| 美日韩丰满少妇在线观看| 日韩av色在线| 亚洲高清久久网| 国产精品专区h在线观看| 精品视频在线观看日韩| 欧美电影免费看| 国产丝袜高跟一区| 精品视频中文字幕| 粉嫩av一区二区三区免费野| 欧美一二三视频| 91国内揄拍国内精品对白| 久久香蕉国产线看观看av| 亚洲精品国偷自产在线99热| 日韩免费高清在线观看| 国产亚洲欧美一区| 8x海外华人永久免费日韩内陆视频| 亚洲男人的天堂在线播放| 国产精品av在线播放| 亚洲资源在线看| 亚洲国产精品久久久久| 最近2019好看的中文字幕免费| 久久99久久99精品免观看粉嫩| 久久国产精品免费视频| 国产日韩欧美91| 国产精品久久久久久亚洲影视| 亚洲精品按摩视频| 成人福利网站在线观看11| 亚洲综合第一页| 亚洲精品自在久久| 色噜噜久久综合伊人一本| 在线日韩第一页| 国产精品一区二区性色av| 日韩国产精品亚洲а∨天堂免| 中文字幕成人精品久久不卡| 精品久久久久久久中文字幕| …久久精品99久久香蕉国产| 欧美性xxxxhd| 欧美精品一区三区| 97国产一区二区精品久久呦| 久久91精品国产91久久跳| 青草青草久热精品视频在线观看| 国产精品电影久久久久电影网| 久久99精品视频一区97| 国产欧美日韩亚洲精品|