2010-02-10 22 views
5

Używanie SWFUpload v2.2, Firefox 3, IE 8, Flash 10 W mojej aplikacji ASP.NET wszystkie przesłane pliki są przetwarzane przez upload.aspx (mam poprawnie ustawiony upload_url obiekt ustawień). W IE 8 przesłane pliki trafiają na stronę upload.aspx i są przetwarzane, ale w Firefoksie nie. Jakieś sugestie?SWFUpload działa w IE, ale nie w przeglądarce Firefox

Większość kodu na stronie, że użytkownik odwiedza Aby przesłać plik znajduje się tutaj (uwaga: strony wzorcowe są używane):

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

Odpowiedz

1

Za pomocą proxy śladu HTTP/debugowanie, aby zobaczyć, czy coś jest w rzeczywistości wysyłany na serwer i jaka odpowiedź jest otrzymywana, jeśli w ogóle. Charles jest moim ulubieńcem i świetnie współpracuje z Flash (i wszystkim innym HTTP). WireShark i Fiddler to inne opcje.

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

Wireshark http://www.wireshark.org/

Skrzypek http://www.fiddler2.com/fiddler2/

+0

Charles był doskonałą propozycją! Używając Charlesa, byłem w stanie potwierdzić, że nic nie jest wysyłane na serwer (wszystkie żądania to GET). Teraz wciąż utknąłem, próbując dowiedzieć się, dlaczego! Poza tym w Charlerze nie pojawia się żaden ruch z IE, więc mam trudny czas zastanowić się, jak wygląda POST. Charles powinien automatycznie skonfigurować IE i wygląda na to, że jest, ale nie widać ruchu. – Xolamee

+0

IE i Firefox proxy działają inaczej. Z tego co pamiętam, musisz włączyć proxy systemu Windows dla IE, a jeśli rozwijasz się lokalnie, musisz wyłączyć ustawienie w IE, aby "ominąć proxy dla localhost". –

+0

Właśnie zdałem sobie sprawę, że jest to znany problem z IE 7, a odwiedzenie mojej witryny przez "http: // computername" zamiast "http: // localhost" naprawia to zachowanie. Uruchamianie skanów zarówno IE, jak i Firefox ujawniło, że obaj przechodzą dokładnie tę samą sekwencję GET, ale w Firefoksie nie ma postu do upload.aspx, aw IE jest. Dzięki, że nadal mi pomagasz z tym Samem. Czy są jakieś wskazówki, które mógłbym znaleźć, które sugerowałyby, dlaczego Firefox nie POST? – Xolamee

2

wiem, jego stary post, ale może to pomoże rozwiązać problem dla niektórych ludzi, bo miałem ten sam problem dzisiaj.

I rozwiązać ten problem nie z użyciem tablicy pocztowego, ponieważ nie wiem jak i gdzie debugować ten skrypt, ale generowanie ciągu kwerendy

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

Po tym dostaniesz ciągu kwerendy jak to: ?SessionID=(id)&OtherID=(otherid)

Działa to z gwarancją pod każdą przeglądarką.

+0

do czego używasz identyfikatora innego? – Thariama

+0

to nie ma znaczenia. Właśnie dodałem to jako przykład. Dzięki za zwrócenie na to uwagi. –

+0

, więc ważną rzeczą tutaj jest użycie use_query_string? Nadal nie rozumiem, jak to rozwiązuje problem. Czy mógłbyś wyjaśnić? – Thariama

0

Wygląda na to, że można uruchomić na this Flash bug. Rozwiązaniem Nort jest sposób, w jaki pracuje nad nim większość ludzi. Jednak w zależności od języka/frameworku może być konieczne dodanie dodatkowego kodu po stronie serwera, aby pobrać zmienną sesji z adresu url i zmusić ją do użycia jako bieżącej sesji.

Możesz wypróbować rozwiązanie w wersji this StackOverflow question lub wypróbuj google typu "flash upload cookie".

1

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

Cookie problem

W Windows plugin dla IE Flash Player (Firefox, Opera, Safari, itp) wyśle ​​ciasteczek IE, niezależnie od używanej przeglądarki. Łamie to uwierzytelnianie i sesje dla wielu technologii skryptowych po stronie serwera.

Deweloperzy powinni przechodzić ręcznie sesji i uwierzytelniania informacji o plikach cookie i ręcznie przywrócić sesji po stronie serwera, jeśli chcą korzystać z Sesji

Pakiet SWFUpload zawiera przykładowy kod obejście dla PHP i ASP.Netto

===== Realizacja niektórych raz off biletu uwierzytelniania stamtąd uczyni wszystko działa w porządku

Można również zrobić to uwarunkowane tym, że autoryzacja jest stosowana tylko wtedy, gdy użytkownicy korzystają z przesyłania

jednak , niektóre testy sprawdzające, czy plik cookie służący do uwierzytelniania nie ingeruje w inną część strony, mogą być ważne w zależności od tego, w jaki sposób wydajesz plik cookie dla tego działania.

2

Spróbuj również w innej przeglądarce, takiej jak Safari lub Chrome.

Jeśli działa tylko w IE, prawdopodobnie jest to Flash Cookie Bug, o którym wspominają inne odpowiedzi.

Jeśli działa we wszystkim z wyjątkiem Firefoksa, możliwe, że nie ma zdefiniowanych css dla paska postępu. Nie wiem, dlaczego to powoduje problem, ale stwierdziłem, że tak. Gdy tylko wstawiłem przykładowe style do mojego pliku css, zaczęło działać w Firefoksie.

css użyłem jest następujący:

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

Dzięki za wspaniałą odpowiedź. Miałem błąd, który powodowałby ładowanie się w IE8/9, ale w Firefoksie nie powiedziałbym (w ASP.NET) kolekcja Request.Files była pusta. Dodanie kodu CSS sprawiło, że był on idealnie przesyłany w Firefoksie. –

1

Chciałem tylko potwierdzić, że ten sam problem był tylko ustalona przez dodanie post_params zmiennej init SWFUpload.

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

Znalazłem odpowiedź ... w końcu. Walczyłem z tym przez bardzo długi czas. Nie mogę uwierzyć, że to jest odpowiedź. Powodem jest SUBST.

Mam komputer z dyskiem SSD i ponieważ ma on tylko 256 GB, postanowiłem go nie partycjonować. Jednak lubię dzielić między partycjami C i D, a emulowałem je na dysku SSD za pomocą polecenia subst. Jeśli pobiorę plik z dysku, który został utworzony za pomocą polecenia subst, wysyłanie SWF nie działa. Prawie nie mogę w to uwierzyć, ale to jest fakt, który w końcu odkryłem dzisiaj, nie mogąc przesyłać plików tylko na moim komputerze programistycznym.

Powiązane problemy