2014-07-15 23 views
7

Utilizzo il plugin jQuery-File-Upload di Blueimp (versione di base) e ho un problema. Il primo caricamento di file funziona come previsto, ma quando voglio inviare un altro file non funziona.jQuery-File-Upload di Blueimp Secondo problema di caricamento di file

fileinput.fileupload({ 
      dataType: 'json', 
      done: function (e, data) { 
       $.each(data.result.files, function (index, file) { 
        //do stuff with files 
       }); 
      } 
     }).bind('fileuploadadd', function (e, data) { 
      data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
      data.submit(); 

     }); 

EDIT:

Ok So che cosa sta causando un problema. Ma non so come risolvere questo problema. Ho usato il plugin fileupload sull'input che ha impostato none. Lo faccio scattare con un altro pulsante che usa il metodo click()/trigger ('click') sull'input nascosto. il primo trigger funziona bene, ma il secondo avvia la finestra di selezione del file. Dopo aver scelto niente è successo. Quando uso direttamente il campo di input, funziona come dovrebbe. Come superare questo problema?

+1

Ho lo stesso concetto e gli stessi sintomi. Sembra che la soluzione bruta sia quella di "fileupload ('destroy')' e riapplicare dopo ogni evento ajax 'done'. L'hai risolto in un altro modo? – vatavale

risposta

5

Il problema sembra perché jQuery-File-Upload clone e campo di input sostituire dopo ogni upload (docs) .

Quindi si attiva l'evento click sul vecchio tag di input del file, che non funziona più.

Per risolvere questo si dispone di almeno due opzioni:

  1. trigger click evento sul nuovo file-input dopo ogni blueimp add evento.

  2. Utilizzare replaceFileInput: false nella configurazione del plug-in (questo sarà degradare UX in alcuni browser). (docs)

0

è difficile rispondere perché non c'è abbastanza informazioni, ma qualcosa di simile può funzionare:

function test() { 

    fileinput.fileupload({ 
     dataType: 'json', 
     done: function (e, data) { 
      $.each(data.result.files, function (index, file) { 
       //do stuff with files 
      }); 
     } 
    }).bind('fileuploadadd', function (e, data) { 
     data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
     data.submit(); 
     test(); 
    }); 

} 

test(); 
+0

Ho provato questo e sfortunatamente non ha aiutato. –

+0

Suppongo di sì, non so come funziona il tuo sito web. – peterpeterson

+1

La versione di base del plugin richiede una risposta JSON formalizzata? –