2013-02-22 13 views
11

Sto utilizzando la versione jquery-ui del caricamento Blueimp e mi piace come posso formattare una tabella e visualizzare i file appena caricati. Ma mi piacerebbe usarlo anche come file manager, quindi voglio precaricare i file esistenti e visualizzarli piuttosto che caricarli. Come lo posso fare? Un esempio di collegamento a cui è stato indirizzato qualcun altro è sufficiente. A proposito, sto caricando diversi tipi di file, non solo immagini.Come precaricare i file esistenti e visualizzarli nella tabella di caricamento blueimp?

Grazie!

risposta

5

Ho anche avuto lo stesso problema. Non è magico come funziona. Raccomando di esaminare il file UploadHandler.php. Quindi sarai in grado di modificare questo plugin in base alle tue esigenze.

Il codice sopra nel tuo secondo post è solo una chiamata ajax allo script uploader (per impostazione predefinita index.php in server/php/cartella). Il metodo call è impostato su "get" per impostazione predefinita in $ .ajax object.

Aprire il file UploadHandler.php e passare al metodo di classe "initialize (...)". Vedrai come viene gestita la chiamata con "get". UploadHandler chiama il metodo di classe this-> get (.:.) Per preparare e inviare l'elenco dei file esistenti. Se usi un'altra directory di upload, devi passare un parametro a UploadHänder. Semplicemente chage la proprietà url nel $ .ajax oggetto come:

url: $('#fileupload').fileupload('option', 'url')+'?otherDir='+myDir, 

allora si dovrebbe inizializzare la proprietà opzione del UploadHandler prima di creare un nuovo oggetto UploadHandler in questo modo:

$otherDir = trim($_REQUEST['otherDir']); 
$otherDir_url = [anyURL] .'/'.$otherDir;//so that the files can be downloaded by clicking on the link 

$options = array(
'upload_dir'=> $otherDir, 
'upload_url'=> $otherDir_url, 
); 

$upload_handler = new UploadHandler($options); 
+0

Mi aiuta, grazie! – Kostanos

4

Trovato il codice nel file js principale ... Non era ovvio come funzionasse. Ho funzionato bene.

// Load existing files: 
$.ajax({ 
    url: $('#fileupload').fileupload('option', 'url'), 
    dataType: 'json', 
    context: $('#fileupload')[0] 
}).done(function (result) { 
    $(this).fileupload('option', 'done').call(this, null, {result: result}); 
}); 
+0

Puoi spiegare come hai fatto? E può essere fatto attraverso una variabile URL? Come php? Foldername = customfolder – VIDesignz

+0

Ho completamente dimenticato. :) Uso il codice in modo diverso ora, quindi questo non è un problema corrente. Credo che la chiamata sopra lo faccia, dove l'url per l'urj ajax è in realtà un selettore jquery che cade fileupload. –

28

o senza ajax chiamata:

  1. Preparare array contenente i dettagli di file già esistenti, ad esempio:

    var files = [ 
        { 
         "name":"fileName.jpg", 
         "size":775702, 
         "type":"image/jpeg", 
         "url":"http://mydomain.com/files/fileName.jpg", 
         "deleteUrl":"http://mydomain.com/files/fileName.jpg", 
         "deleteType":"DELETE" 
        }, 
        { 
         "name":"file2.jpg", 
         "size":68222, 
         "type":"image/jpeg", 
         "url":"http://mydomain.com/files/file2.jpg", 
         "deleteUrl":"http://mydomain.com/files/file2.jpg", 
         "deleteType":"DELETE" 
        } 
    ]; 
    
  2. fatto richiamata

    var $form = $('#fileupload');   
    
    // Init fileuploader if not initialized 
    // $form.fileupload(); 
    
    $form.fileupload('option', 'done').call($form, $.Event('done'), {result: {files: files}}); 
    
+1

Un altro attributo che può essere aggiunto all'array di file è 'thumbnailUrl' che contiene il percorso dell'anteprima miniatura dell'immagine memorizzata da visualizzare –

+0

Non sicuro su questo, non vorreste che quei file si precaricassero quando la pagina viene caricata invece su un caricamento di file? Questo ha più senso per me. –

+0

Ignora quello che ho detto prima! Funziona come un fascino. L'unica cosa che non capisco è l'deleteURL ... Qualcuno può spiegarlo? –

1

Se qualcuno di voi guardando questo sta facendo in .NET, trovare questo: (per me è in application.js

Per un piuttosto versione recente, v'è una funzione

// Load existing files: 
$.getJSON($('#fileupload form').prop('action'), function(files) { 

files = somethingelse; 

    var fu = $('#fileupload').data('fileupload'); 
    fu._adjustMaxNumberOfFiles(-files.length); 
    fu._renderDownload(files) 
     .appendTo($('#fileupload .files')) 

     .fadeIn(function() { 
      // Fix for IE7 and lower: 
      $(this).show(); 
     }); 
}); 

All'interno delle application.js sono d tuttavia, per .NET, e in realtà ne aveva bisogno.

Quindi imposta il tuo qualcosa sui tuoi file o "" a seconda di cosa vuoi mostrare. Se rimuovi i file di riga = somethingelse, precaricherà tutti i file dalla cartella.

Problemi correlati