2011-08-19 2 views
7

Normalmente, per caricare un file, si tratterebbe di una procedura in due passaggi: selezionare un file e quindi confermare il caricamento. Sto lavorando per caricare l'immagine del profilo. Poiché l'immagine del profilo è di solito piccola, voglio ridurre i clic del mouse per i miei utenti facendo in modo che il caricamento del file inizi sulla selezione del file. Si prega di suggerire buoni, e forse comuni, modi per ottenere ciò (vorrei anche imparare le loro insidie, se ce ne sono). Grazie.avvia il caricamento del file alla selezione

risposta

6

L'evento change si attiva quando un file viene selezionato da un campo di caricamento file. Il valore del campo sarà '' se nessun file è selezionato (il campo è deselezionato).

<form method="post" action="upload.script"> 
    <input type="file" id="formfile"/> 
    <input type="submit" id="formsubmit"/> 
</form> 

<script type="text/javascript"> 
    var file= document.getElementById('formfile'); 
    var submit= document.getElementById('formsubmit'); 

    // If scripting is available, can auto-submit the form, so no submit 
    // button needed. 
    // 
    submit.parentNode.removeChild(submit); 

    // When field is filled in with a filename, submit form 
    // 
    file.onchange= function() { 
     if (this.value!=='') 
      this.form.submit(); 
    }; 
</script> 

È una buona idea? Discutibile. Inviare automaticamente un modulo se l'utente non si aspetta che possa avere un impatto negativo.

+0

Grazie per aver fornito la soluzione. Per quanto riguarda il problema che hai menzionato, penso che non causerebbe maggiore preoccupazione nel mio caso. – tamakisquare

+0

La chiamata a form.submit() non riuscirà su IE8 e si abbasserà con accesso negato. –

+0

@Maurice:? funziona bene per me in IE6. – bobince

3

Si potrebbe utilizzare jQuery per inviare automaticamente il file sul sever sulla selezione ...

Problemi:

cosa succede se l'utente doesnt vogliono scegliere il file, ma il file è già caricato sul server?

Cosa succede se il precedente si verifica prima del completamento del caricamento del file?

E quando l'utente non fa nulla e chiude la pagina? Per quanto tempo manterrai il file

1

Se utilizzi GMail, noterai che dispongono di una soluzione a trascinamento per il collegamento di file a un'e-mail. Trascina dal desktop su una regione predefinita e wallah.

Se si dispone del supporto HTML5 per le persone che lo utilizzano (la maggior parte dovrebbe essere aggiornata), è possibile utilizzare il drag-drop integrato in HTML5.

prova a guardare questo: http://www.thebuzzmedia.com/html5-drag-and-drop-and-file-api-tutorial/

Si potrebbe anche dare qualcosa di simile a una prova Plupload (http://www.plupload.com/), ma che potrebbe essere eccessivo per questo. Plupload è più adatto per i file più grandi che richiedono animazioni e blocchi di progresso. Tuttavia, so che potresti eseguire lo script in modo tale che l'upload inizi immediatamente e tu reindirizzi non appena viene completato. Potrebbe anche essere necessario un lavoro sul lato server per il quale non si è stati configurati.