SWFUpload работает в IE, но не в Firefox - PullRequest
5 голосов
/ 10 февраля 2010

Использование 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 ]

2 голосов
/ 09 сентября 2011

Попробуйте и в другом браузере, например 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; }
2 голосов
/ 04 июня 2010

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

Я решил эту проблему не с использованием массива 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)

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

1 голос
/ 08 марта 2013

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

post_params : {
    PHPSESSID : '<?=session_id()?>'
},
1 голос
/ 28 января 2011

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

Проблема с печеньем

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

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

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

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

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

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

1 голос
/ 10 февраля 2010

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

Charles http://www.xk72.com/charles/

WireShark http://www.wireshark.org/

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

0 голосов
/ 20 сентября 2015

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

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

0 голосов
/ 09 ноября 2010

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

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

...