1

Uploadify を FireFox で動作させることができません。IE と Chrome で動作しています。

フラッシュ Cookie のバグに関する記事をいくつか読み、その修正を実装しようとしましたが、成功しませんでした。

ASP.NET WebApplication で動作させようとしています。誰かが同様の問題を抱えていたので、アドバイスをいただけますか?

デフォルト.aspx

  $(document).ready(function () {
            $('#fuFiles').uploadify({
                'uploader': 'Scripts/uploadify.swf',
                'script': 'FileUploads.aspx',
                'cancelImg': 'Themes/Images/cancel.png',
                'auto': 'false',
                'multi': 'true',
                'wmode': 'transparent',
                'scriptData' :  {"ASPSESSID" : "<%=Session.SessionID %>"},
                'buttonText': 'Browse For Files',
                'width': '180',
                'height': '45'
            });
        });

FileUploads.aspx.cs

protected void Page_Load(object sender, EventArgs e)
        {

                HttpPostedFile uploads = Request.Files["FileData"];

}

Global.asax

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            /* Fix for the Flash Player Cookie bug in Non-IE browsers.
          * Since Flash Player always sends the IE cookies even in FireFox
          * we have to bypass the cookies by sending the values as part of the POST or GET
          * and overwrite the cookies with the passed in values.
          * 
          * The theory is that at this point (BeginRequest) the cookies have not been read by
          * the Session and Authentication logic and if we update the cookies here we'll get our
          * Session and Authentication restored correctly
          */

            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 (Exception)
            {
                Response.StatusCode = 500;
                Response.Write("Error Initializing Session");
            }

            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 (Exception)
            {
                Response.StatusCode = 500;
                Response.Write("Error Initializing Forms Authentication");
            }
        }

        void UpdateCookie(string cookie_name, string cookie_value)
        {
            HttpCookie cookie = HttpContext.Current.Request.Cookies.Get(cookie_name);
            if (cookie == null)
            {
                cookie = new HttpCookie(cookie_name);
                HttpContext.Current.Request.Cookies.Add(cookie);
            }
            cookie.Value = cookie_value;
            HttpContext.Current.Request.Cookies.Set(cookie);
        }
    }

Web.config

 <location path="FileUploads.aspx">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
4

0 に答える 0