2013-02-09 5 views
6

Non riesco ad aggiornare il plug-in di caricamento del file Jquery, quindi quando si carica un file si sovrascrive semplicemente un file esistente con lo stesso nome invece di rinominarlo con un conteggio.caricamento file jquery - come sovrascrivere il file NON rinominare

ho applicato il cambio rivestito in questo link: https://github.com/blueimp/jQuery-File-Upload/issues/1965

ma non posso sembrare sovrascrivere questo plugin per ottenere questo lavoro?

c'è una domanda aperta esistente non ancora risposto qui: jQuery File Upload by bluimp, how to replace instead of renaming

alcuna guida su questo sarebbe molto apprezzato.

+0

Hai forse trovare una soluzione per sovrascrivere un file? Ne ho bisogno anche io. Grazie –

+0

dare un'occhiata qui: https://stackoverflow.com/a/47333596/2065594 –

risposta

-2

Basta eseguire una richiesta Ajax all'interno del callback per avviare il caricamento e cancellare il file dal disco dati. È possibile trovare il nome file con data.files [0] .name.

Poi basta cercare il TR con il vecchio link, in questo modo:

$("a[title='"+ data.files[0].name + "']").each(function() { 
     $(this).closest('tr').fadeOut(); 
    }); 

e fade out.

Saluti

+0

mi dispiace, ma non riesco a capire come un'operazione DOM su una riga di tabella ha _anything_ a fare con la domanda a portata di mano , o anche il tuo suggerimento di cancellare il file prima del caricamento ... – Peter

2

Avevo bisogno della stessa opzione di sovrascrittura file.

Utilizzando il file PHP UploadHandler.php ho fatto un trucco molto veloce che funziona per me. Sono sicuro che c'è un modo migliore, ma questo può aiutare gli altri.

Cercare il gestore 'upcount_name_callback' e sostituire l'estratto conto con la numerazione (indice) eliminata. Ho lasciato l'istruzione return originale nel caso in cui ho bisogno di tornare :)

protected function upcount_name_callback($matches) { 
    $index = isset($matches[1]) ? intval($matches[1]) + 1 : 1; 
    $ext = isset($matches[2]) ? $matches[2] : ''; 
    return ''.$ext; 
    /* return ' ('.$index.')'.$ext; */ 
} 
8

Se si utilizza UploadHandler.php che esiste nel wiki è semplice. Nel metodo get_file_name è necessario sostituire questa linea:

return $this -> get_unique_filename($this -> trim_file_name($name, $type, $index, $content_range), $type, $index, $content_range); 

con questo:

return $this -> trim_file_name($name, $type, $index, $content_range); 
+1

Lol, amico, la tua soluzione mi ha aiutato, ma in realtà questo non ha funzionato nel mio caso. Allora scriverò la mia risposta. –

0

consideri la documentazione su github (here) e scorrere fino al punto in cui si dice "come legare un file da un nodo elemento durante il ciclo di vita di un caricamento ". Questo è il codice:

$(function() { 
    $('#fileupload').fileupload({ 
     dataType: 'json', 
     add: function (e, data) { 
      data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
      data.submit(); 
     }, 
     done: function (e, data) { 
      data.context.text('Upload finished.'); 
     } 
    }); 
}); 

Prestare attenzione alla funzione di callback fatto. Se si espande l'oggetto dati si noterà che esiste un oggetto data.files nonché un oggetto data.result. data.result contiene il nome del file sul server. Quindi, il nome del file appena caricato sul server è data.result.files [0] .name in base allo script di esempio riportato sopra.

Spero che questo aiuta qualcuno

0

ho provato la soluzione di @MKoosej.Nel mio caso ha funzionato bene, ma ho anche modificato trim_file_name dove faccio in modo che restituisca solo un nome di file (dovevo fare un uploader che trasformasse qualsiasi nome di file in data.csv). Inoltre ho dovuto creare un'altra versione di uploader in cui dovrei riscrivere il nome del file invece di rinominarlo, ma i diversi file con nomi diversi dovrebbero rimanere diversi. Così, quando ho provato la soluzione di @MKoosej, ho iniziato a caricare file con estensione come .jpeg senza nome file. Così, ho trovato questa soluzione: in func get_unique_filename in fin dall'inizio ho messo questo:

$oldName=$name; 

e tornai $oldName invece di $name e andava bene.

1

2016 AGGIORNA a MKoosej correzione! In UploadHandler.php → funzione get_file_name protetta ... sostituire

return $this->get_unique_filename(
     $file_path, 
     $this->fix_file_extension($file_path, $name, $size, $type, $error, 
      $index, $content_range), 
     $size, 
     $type, 
     $error, 
     $index, 
     $content_range 
    ); 

con

return $this -> trim_file_name($file_path, $name, $size, $type, $error, $index, $content_range);