ASP.NET - Uploadify работает в IE, а не в FF (Auth Cookies - PullRequest
1 голос
/ 21 марта 2012

У меня есть приложение WebForms, и я пытаюсь использовать библиотеку jify для загрузки.

Он отлично работает в IE8, но не в FF7, FF10 или FF3. Точка останова, которую я вставил в Upload.ashx, не достигнута.

Я сделал довольно поиск и обнаружил, что это связано с куки, что-то вроде ASPXAUTH. Я попытался добавить его в «scriptData», но безуспешно.

Есть идеи?

Код страницы:

<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");
            }
        }

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Если содержимое вашего сайта не является общедоступным, добавьте к web.config авторизационный доступ к обработчику.

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

Существуют некоторые различия в том, как браузеры осуществляют загрузку файлов с помощью компонента flash.
IE используеттот же сеанс.FF открывает новое соединение, поэтому сервер видит не прошедшего проверку подлинности пользователя, который пытается получить доступ к защищенной странице.

0 голосов
/ 21 марта 2012

У меня была проблема с использованием MVC, когда uploadify не публиковала в действии контроллера.

Это было связано с проблемой аутентификации. Flash по какой-то причине создает свой собственный отдельный файл cookie для браузера, поэтому, если пользователь уже прошел проверку подлинности с помощью файла cookie браузера (ASPXAUTH), а затем файл swf выполняет отдельный запрос, используя свой собственный файл cookie Flash (который не был проверен.

Запустите fiddler, чтобы увидеть, что происходит, вы можете обнаружить, что запрос сервера, который делает uploadify, перенаправляется на страницу login.aspx.

Хотя я не знаю, почему это будет работать только в IE?

...