SWFUpload работает в IE, но не в Firefox

Использование SWFUpload v2.2, Firefox 3, IE 8, Flash 10 В моем приложении ASP.NET все закачки обрабатываются upload.aspx (у меня установлен правильный upload_url в объекте настроек). В IE 8 закачки попадают на страницу upload.aspx и обрабатываются, а в Firefox - нет. Какие-либо предложения?

Большая часть кода для страницы, которую пользователь посещает для загрузки файла, показана здесь (примечание: используются главные страницы):

<script type="text/javascript" src="../swfupload/swfupload.js"></script>

<script type="text/javascript" src="../js/handlers.js"></script>

<script type="text/javascript">
    var swfu;
    window.onload = function() {
        swfu = new SWFUpload({
            // Backend Settings
            upload_url: "../upload.aspx",
            post_params: {
                "ASPSESSID": "<%=Session.SessionID %>"
            },

            // File Upload Settings
            file_size_limit: "10 MB",
            file_types: "*.*",
            file_types_description: "All Files",
            file_upload_limit: 1,
            file_queue_limit: 1,
            //assume_success_timeout: 60,

            // Event Handler Settings - these functions as defined in Handlers.js
            //  The handlers are not part of SWFUpload but are part of my website and control how
            //  my website reacts to the SWFUpload events.
            file_queue_error_handler: fileQueueError,
            file_dialog_complete_handler: fileDialogComplete,
            upload_progress_handler: uploadProgress,
            upload_error_handler: uploadError,
            upload_success_handler: uploadSuccess,
            upload_complete_handler: uploadComplete,

            // Button settings
            button_image_url: "../Images/XPButtonNoText_160x22.png",
            button_placeholder_id: "spanButtonPlaceholder",
            button_width: 160,
            button_height: 22,
            button_text: '<span class="button">Upload File<span class="buttonSmall">(10 MB Max)</span></span>',
            button_text_style: '.button { font-family: Helvetica, Arial, sans-serif; font-size: 14pt; } .buttonSmall { font-size: 10pt; }',
            button_text_top_padding: 1,
            button_text_left_padding: 5,

            // Flash Settings
            flash_url: "../swfupload/swfupload.swf", // Relative to this file

            custom_settings: {
                upload_target: "divFileProgressContainer"
            },

            // Debug Settings
            debug: false
        });
    }
</script>

7 ответов

Попробуйте также в другом браузере, таком как Safari или Chrome.

Если это работает только в IE, возможно, это ошибка Flash Cookie, о которой упоминают другие ответы.

Если он работает во всем, кроме Firefox, возможно, что для индикатора выполнения не определено css. Я не знаю, почему это вызывает проблемы, но я обнаружил, что это так. Как только я поместил образцы стилей в свой файл CSS, он начал работать в Firefox.

CSS, который я использовал, выглядит следующим образом:

DIV.ProgressBar { width: 100px; padding: 0; border: 1px solid black; margin-right: 1em; height:.75em; margin-left:1em; display:-moz-inline-stack; display:inline-block; zoom:1; *display:inline; }
DIV.ProgressBar DIV { background-color: Green; font-size: 1pt; height:100%; float:left; }
SPAN.asyncUploader OBJECT { position: relative; top: 5px; left: 10px; }

Я знаю, это старый пост, но, возможно, это поможет решить проблему для некоторых людей, потому что у меня была такая же проблема сегодня.

Я решил эту проблему не с использованием массива post, потому что я не знаю, как и где отлаживать этот скрипт, а с помощью генерации строки запроса

<script type="text/javascript">
    var swfu;
    window.onload = function() {
        swfu = new SWFUpload({
            // Backend Settings
            upload_url: "../upload.aspx",
            post_params: {
                SessionID: "<%=Session.SessionID %>",
                OtherID: "<%=OtherID %>"
            },

            //And here comes the highlight

            use_query_string : true,

            //code ...

После этого вы получите строку запроса, подобную этой: ?SessionID=(id)&OtherID=(otherid)

Это работает гарантированно под каждым браузером.

Просто хотел подтвердить, что та же проблема была просто исправлена, добавив post_params переменная для инициализации загрузки SWFU

post_params : {
    PHPSESSID : '<?=session_id()?>'
},

http://demo.swfupload.org/Documentation/

Проблема с cookie

В Windows плагин не-IE Flash Player (FireFox, Opera, Safari и т. Д.) Будет отправлять куки-файлы IE независимо от используемого браузера. Это нарушает аутентификацию и сеансы для многих серверных скриптовых технологий.

Разработчики должны вручную передать информацию о файлах cookie сеанса и аутентификации и вручную восстановить сеансы на стороне сервера, если они хотят использовать сеансы

Пакет SWFUpload содержит примерный код для PHP и ASP.Net

===== Реализация некоторых разовых билетов проверки подлинности сделает все хорошо

Вы также можете сделать условным, чтобы эта аутентификация применялась только тогда, когда пользователи используют загрузку

Тем не менее, некоторые проверки, чтобы убедиться, что cookie-файл аутентификации не распространяется на другую часть сайта, могут быть важны в зависимости от того, как вы используете cookie для этого действия.

Используйте прокси-сервер трассировки / отладки HTTP, чтобы узнать, отправляется ли вообще что-либо на сервер и какой ответ принимается, если таковой имеется. Чарльз мой любимый и отлично работает с Flash (и всем остальным HTTP). WireShark и Fiddler и другие варианты.

Чарльз http://www.xk72.com/charles/

WireShark http://www.wireshark.org/

Скрипач http://www.fiddler2.com/fiddler2/

Похоже, вы могли столкнуться с этой ошибкой Flash. Решение Nort - способ, которым большинство людей работали над этим. Однако, в зависимости от вашего языка / структуры, вам может потребоваться добавить дополнительный код на стороне сервера, чтобы взять переменную сеанса из URL-адреса и принудительно использовать ее в качестве текущего сеанса.

Вы можете попробовать решение в этом вопросе Stackru или попробовать поискать что-то вроде " flash upload cookie".

Я нашел ответ... наконец-то. Я боролся с этим очень долго. Не могу поверить, что это ответ. Причина - СУБСТ.

У меня есть компьютер с SSD-диском, и, поскольку он имеет только 256 ГБ, я решил не разбивать его на разделы. Однако мне нравится разделение между разделами C и D, и я эмулировал его на моем SSD-диске с помощью команды subst. Если я заберу файл с диска, созданного с помощью команды subst, загрузка SWF не будет работать. Я почти не могу в это поверить, но сегодня я наконец-то обнаружил тот факт, что не могу загружать файлы только на свой компьютер.

Другие вопросы по тегам