2010-02-10 3 views
5

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

ответ

1

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

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

WireShark http://www.wireshark.org/

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

+0

Charles был отличным предложением! Используя Charles I, я смог подтвердить, что на сервер ничего не отправляется (все запросы - GET). Теперь я все еще застреваю, пытаясь понять, почему! Кроме того, никакой трафик от IE не появляется в Чарльзе, поэтому мне сложно понять, как выглядит успешный POST. Чарльз должен автоматически настраивать IE, и кажется, что это так, но трафика нет. – Xolamee

+0

IE и Firefox прокси работают иначе. Из того, что я помню, вам нужно специально включить прокси-сервер Windows для IE, и если вы разрабатываете локально, вам нужно отключить параметр в IE где-нибудь, чтобы «обойти прокси-сервер для localhost». –

+0

Я просто понял, что это известная проблема с IE 7, и посещение моего сайта через «http: // computername» вместо «http: // localhost» исправляет поведение. Запуск сканирования как IE, так и Firefox показал, что они оба проходят точно такую ​​же последовательность GET, но в Firefox нет сообщений для upload.aspx, а в IE есть. Спасибо, что продолжал помогать мне с этим Сэмом. Есть ли какие-либо подсказки, которые я мог бы найти, которые могли бы предположить, почему Firefox не выполняет POST? – Xolamee

2

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

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

<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)

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

+0

для чего вы используете OtherID? – Thariama

+0

это не имеет значения. Я просто добавил его в качестве примера. Спасибо, что заметили это. –

+0

так важно здесь использовать use_query_string? Я до сих пор не понимаю, как это решает проблему. Не могли бы вы объяснить? – Thariama

0

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

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

1

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

вопрос Cookie

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

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

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

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

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

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

2

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

Если это работает только в IE, это, вероятно, ошибка Flash Cookie, о которой говорят другие.

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

устанавливаемых сотовое я использовал следующий образ:

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; } 
+0

Спасибо за отличный ответ. У меня была ошибка, когда она загружалась в IE8/9, но в Firefox он не мог сказать (в ASP.NET). Коллекция Request.Files была пуста. Добавление CSS-кода позволило полностью загрузить Firefox. –

1

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

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

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

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

Смежные вопросы