2010-02-10 27 views
5

Utilizzo di SWFUpload v2.2, Firefox 3, IE 8, Flash 10 Nella mia applicazione ASP.NET tutti i caricamenti vengono elaborati da upload.aspx (ho impostato il corretto upload_url in l'oggetto impostazioni). In IE 8 i caricamenti raggiungono la pagina upload.aspx e vengono elaborati, ma in Firefox no. Eventuali suggerimenti?SWFUpload funziona in IE, ma non in Firefox

La maggior parte del codice per la pagina che le visite utenti di caricare un file è qui riportati (nota: le pagine master vengono utilizzate):

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

risposta

1

Usa un proxy traccia HTTP/debug per vedere se qualcosa viene effettivamente inviato al server e quale risposta viene ricevuta, se presente. Charles è il mio preferito e funziona perfettamente con Flash (e con tutto il resto HTTP). WireShark e Fiddler sono altre opzioni.

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

WireShark http://www.wireshark.org/

Fiddler http://www.fiddler2.com/fiddler2/

+0

Charles era un suggerimento eccellente! Utilizzando Charles I sono stato in grado di confermare che nulla viene inviato al server (tutte le richieste sono GET). Ora sono ancora bloccato cercando di capire perché! Inoltre, non c'è traffico da IE a Charles, quindi ho difficoltà a capire che aspetto ha un POST di successo. Charles dovrebbe configurare automaticamente IE, e sembra che lo sia, ma nessun traffico si presenta. – Xolamee

+0

IE e Firefox proxy funzionano in modo diverso. Da quello che ricordo, devi attivare specificamente il proxy di Windows per IE, e se stai sviluppando localmente devi disattivare un'impostazione in IE da qualche parte per "bypassare proxy per localhost". –

+0

Ho appena realizzato che questo è un problema noto con IE 7 e visitare il mio sito Web tramite "http: // computername" anziché "http: // localhost" corregge il comportamento. Le scansioni in esecuzione sia di IE che di Firefox hanno rivelato che entrambe passano attraverso la stessa identica sequenza di GET ma in Firefox non ci sono post per upload.aspx, e in IE c'è. Grazie per aver continuato ad aiutarmi con questo Sam. Ci sono indizi che potrei cercare per suggerire perché Firefox non POST? – Xolamee

2

Lo so, è un vecchio post, ma forse vi aiuterà a risolvere il problema per alcune persone, perché ho avuto la lo stesso problema oggi.

Ho risolto questo problema non con l'utilizzo della matrice postale, perché io non so come, e dove eseguire il debug di script, ma con la generazione di un querystring

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

Dopo questo si otterrà un querystring come questo: ?SessionID=(id)&OtherID=(otherid)

Questo funziona con garanzia su tutti i browser.

+0

per che cosa usi l'OtherID? – Thariama

+0

non importa. L'ho appena aggiunto come esempio. Grazie per averlo notato. –

+0

quindi la cosa importante qui è l'uso di use_query_string? Ancora non capisco come questo risolva il problema. Potresti spiegare per favore? – Thariama

0

Sembra che potresti correre su this Flash bug. La soluzione di Nort è il modo in cui molte persone hanno lavorato attorno ad esso. Tuttavia, in base alla lingua/al framework, potrebbe essere necessario aggiungere un altro codice lato server per prendere la variabile di sessione dall'URL e forzarla per essere utilizzata come sessione corrente.

È possibile provare la soluzione in this StackOverflow question oppure provare a cercare google come "flash upload cookie".

1

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

Cookie problema

Su Windows il plugin non-IE Flash Player (Firefox, Opera, Safari, ecc) invierà i cookie di IE indipendentemente dal browser utilizzato. Ciò interrompe l'autenticazione e le sessioni per molte tecnologie di scripting lato server.

Gli sviluppatori dovrebbero passare manualmente sessione e autenticazione informazioni dei cookie e ripristinare manualmente sessioni sul lato server, se vogliono usare le sessioni

Il pacchetto contiene SWFUpload work-around codice di esempio per PHP e ASP.Net

===== l'attuazione di alcune una volta fuori ticket di autenticazione da lì renderà le cose funzionano bene

È inoltre possibile rendere condizionale che questa autenticazione è applicata solo quando gli utenti utilizzano il caricamento

Tuttavia , alcuni test per garantire che il cookie di autenticazione non aggiri l'altra parte del sito, forse importante a seconda di come si rilascia il cookie per questa azione.

2

Provate anche in un altro browser, come Safari o Chrome.

Se funziona solo in IE, è probabilmente il Bug di Flash che le altre risposte menzionano.

Se funziona in tutto tranne Firefox, potrebbe essere che non ci sono css definiti per la barra di avanzamento. Non so perché questo causa un problema, ma ho scoperto che lo ha fatto. Appena ho messo gli stili di esempio nel mio file css, ha iniziato a funzionare in Firefox.

il CSS che ho usato è il seguente:

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

Grazie per l'ottima risposta. Avevo un bug in cui si caricava bene in IE8/9, ma in Firefox non funzionava dicendo (in ASP.NET) la raccolta Request.Files era vuota. L'aggiunta del codice CSS lo ha fatto caricare perfettamente in Firefox. –

1

Volevo solo per confermare che lo stesso problema è stato risolto solo con l'aggiunta di post_params variabile al init SWFUpload.

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

Ho trovato la risposta ... finalmente. Ho lottato con questo per un tempo molto lungo. Non posso credere che questa sia la risposta. Il motivo è SUBST.

Ho un computer con unità SSD e dal momento che è solo 256 GB ho deciso di non partizionarlo. Tuttavia mi piace dividere tra partizioni C e D e l'ho emulato sul mio disco SSD tramite comando subst. Se prelevo il file dall'unità che è stata creata con il comando subst, il caricamento di swf non funziona. Quasi non posso crederci, ma è un dato di fatto che finalmente ho scoperto che oggi non riesco a caricare file sul mio computer di sviluppo.

Problemi correlati