2013-04-02 11 views
8

Voglio cancellare un singolo file, usando il plugin per il caricamento del file jquery. Voglio farlo con il plugin di base, senza bisogno di tutte le cose dell'interfaccia utente.Cancella un singolo file, usando il caricamento del file jquery

Dove si trovano i file dopo averli selezionati sul mio filesystem locale?

+0

prima o durante il caricamento? –

+1

Prima di caricare, voglio mostrare un elenco di file che verranno caricati dopo l'invio. L'intenzione è di cancellare i file da questa lista. Il comportamento esatto che sto tentando di creare è anche implementato nella versione dell'interfaccia utente: http://blueimp.github.com/jQuery-File-Upload/. – Hoetmaaiers

risposta

7

ho fatto in questo modo nel mio progetto: aggiungere upload e annullare pulsanti per ogni file

$('#TestForm').fileupload({ 
     dataType : 'json', 
     autoUpload : false, 
     add : function(e, data) { 
      var file=data.files[0]; 
      var vOutput=""; 
      vOutput+="<tr><td>"+file.name+"</td>" 
      vOutput+="<td><input type='button' class='fileUpload' value='upload'></td>" 
      vOutput+="<td><input type='button' class='fileCancel' value='cancel'></td></tr>" 
      $("#TestTable").append(vOutput) 
      $(".fileUpload").eq(-1).on("click",function(){ 
        data.submit(); 
      }) 
      $(".fileCancel").eq(-1).on("click",function(){ 
        $(this).parent().parent().remove() 
      }) 
     } 
}) 

se volete potete anche aggiungere pulsanti per caricare o cancellare tutti i file come questo:

$("#fileUploadAll").on("click", function() { 
     $(".fileUpload").click(); // click all upload buttons 
    }) 
    $("#fileCancelAll").on("click", function() { 
     $(".fileCancel").click(); //click all cancel buttons 
    }) 

HTML:

<form id='TestForm'> 
    <input type="file" id="FileSelect" name="files[]" data-url="yourURL.php" multiple/> 
    <input type="button" value="upload all" id="fileUploadAll"/> 
    <input type="button" value="cancel all" id="fileCancelAll"/> 
    <table id='TestTable'></table> 
</form> 
+0

Grazie per la vostra risposta, mi ha dato una visione migliore. Ora realizzo il mio vero problema. Voglio selezionare più volte un file dal mio filesystem e farlo appendere a un singolo file di input (1 param) – Hoetmaaiers

+0

@RobinH sei sicuro che '$ (questo) .parent(). Parent(). Remove()' può prevenire plugin da caricare finalmente il tuo file? –

+0

@AllanRuin l'evento di invio è associato a questo pulsante. E se rimuovi il pulsante, il file non verrà caricato. –

0

ho avuto un caso in cui abbiamo bisogno di eseguire un controllo per vedere se il fi selezionato le (s) già esistevano sul server e danno la possibilità di sovrascriverle. Se l'utente ha scelto di non sovrascrivere il file, allora non volevamo caricare il file sul server, ma tenerlo in coda nel caso in cui abbiano cambiato idea, cioè non eliminare l'intero tr.

Per fare ciò, è sufficiente aggiungere un attributo disabled al pulsante di avvio nel tr che si desidera impedire di caricare. jQuery fileupload eseguirà il churn attraverso la coda normalmente e ignorerà qualsiasi riga che abbia un pulsante di avvio disabilitato.

1

Un'altra opzione è menzionato qui se non volete eseguire l'override del metodo add: Add cancel upload or abort functionality to bootstrap multiple file upload plugin

$('#fileupload').bind('fileuploadadd', function(e, data){ 
    var jqXHR = data.submit(); // Catching the upload process of every file 
    $('#cancel_all').on('click',function(e){ 
     jqXHR.abort(); 
    }); 
}); 

Esso utilizza l'oggetto jqXHR restituito dal metodo di invio. Non dimenticare di disattivare l'impostazione di caricamento automatico. Se non vuoi cancellare tutti i caricamenti, assicurati di allegare l'evento click all'elemento appropriato per quel file.

Problemi correlati