Search code examples
asp.netcookieswebformsuploadify

ASP.NET - Uploadify works in IE, not in FF (Auth Cookies


i have a WebForms application, and am trying to use the uploadify jquery library.

It works fine in IE8, but doesn't in FF7, FF10, or FF3. The break point i put in Upload.ashx is not hit.

I did quite the search and found that it has to does with cookies, something like ASPXAUTH. I tried adding it to 'scriptData', but no success.

Any ideas?

Page code:

<script type="text/javascript">

    $(document).ready(function () {


        alert($(".hidcook").val());
        // <![CDATA[
        var id = "55";
        var theString = "asdf";

        $('#fileInput').uploadify({
            'uploader': 'uploadify/uploadify.swf',
            'script': 'Upload.ashx',


            'scriptData': { 'id': id, 'foo': theString },
            'cancelImg': 'uploadify/cancel.png',
            'auto': true,
            'multi': true,
            'fileDesc': 'All Files',

            'queueSizeLimit': 90,

            'buttonText': 'Importar Planilha',
            'folder': '/uploads',
            'onAllComplete': function (event, queueID, fileObj, response, data) {
            }
        });
    });
   // ]]></script>

Upload.ashx:

 public class Upload : IHttpHandler, IRequiresSessionState{

        public void ProcessRequest(HttpContext context)
        {
            try
            {
                HttpPostedFile file = context.Request.Files["Filedata"]; //breakpoint

                int id = (Int32.Parse(context.Request["id"]));
                string foo = context.Request["foo"];
                file.SaveAs("C:\\" + id.ToString() + foo + file.FileName);

                context.Response.Write("1");
            }
            catch (Exception ex)
            {
                context.Response.Write("0");
            }
        }

Solution

  • If your website content is not public, add to web.config authorization access to the Handler.

    <location path="Upload.ashx">
       <system.web>
         <authorization>
           <allow users="*"/>
         </authorization>
       </system.web>
     </location>
    

    There are some differences in how browsers implement file upload through flash component.
    IE uses the same session. FF opens a new connection, so the server sees an un-authenticaded user that is trying to access a protected page.