2016-03-05 18 views
6

Vorrei creare un pulsante personalizzato per il caricamento di un'immagine. Sono in grado di ottenere questo risultato con la demo di seguito:css nascondi il pulsante "Scegli file" ma visualizza il file dopo aver selezionato

https://jsfiddle.net/algometrix/fgrbyo4z/

ma come faccio a visualizzare il nome del file selezionato dopo? O forse anche una miniatura di un'immagine, se possibile? Come dopo aver scelto un file dalla finestra che si apre, mi piacerebbe che mostrasse "il nome del file" sulla pagina dopo che l'ho selezionato.

Javascript - jQuery è totalmente un'opzione qui se qualcuno può aiutare in quella zona.

HTML

<div> 
    <div style="display:block;text-align:center;margin-top:20%;"> 
    <label for="files"> <span class="btn">Select Image</span></label> 
    <input style="visibility: hidden; position: absolute;" id="files" class="form-control" type="file" name="files"> 

    </div> 

</div> 

CSS

.btn { 
    font-family: Arial; 
    color: #ffffff; 
    font-size: 20px; 
    background: #3f88b8; 
    padding: 10px 20px 10px 20px; 
    text-decoration: none; 
} 

.btn:hover { 
    background: #3cb0fd; 
    background-image: -webkit-linear-gradient(top, #3cb0fd, #3498db); 
    background-image: -moz-linear-gradient(top, #3cb0fd, #3498db); 
    background-image: -ms-linear-gradient(top, #3cb0fd, #3498db); 
    background-image: -o-linear-gradient(top, #3cb0fd, #3498db); 
    background-image: linear-gradient(to bottom, #3cb0fd, #3498db); 
    text-decoration: none; 
} 
+0

Javascript. È un'opzione? –

+0

Sì, moltissimo! –

+1

Prova i seguenti link: http://stackoverflow.com/questions/4459379/preview-an-image-before-it-is-uploaded http://stackoverflow.com/questions/12368910/html-display-image-after- select-filename –

risposta

6

Con l'aggiunta di javascript, possiamo solo guardare per l'evento change sull'ingresso, e mettere il nome della pagina. Si prega di notare questi cambiamenti HTML minori:

<div class="file-upload"> 
    <label for="upload-1" class="btn">Upload</label> 
    <input type="file" id="upload-1"> 
    <p class="file-name">Please select a file.</p> 
</div> 

Con questo jQuery:

jQuery(function($) { 
    $('input[type="file"]').change(function() { 
    if ($(this).val()) { 
     var filename = $(this).val(); 
     $(this).closest('.file-upload').find('.file-name').html(filename); 
    } 
    }); 
}); 

Working Fiddle

1

Questo script mostra l'immagine non appena caricato:

function readURL(input) { 

    if (input.files && input.files[0]) { 
     var reader = new FileReader(); 

     reader.onload = function (e) { 
      $('#img').show().attr('src', e.target.result); 
     } 

     reader.readAsDataURL(input.files[0]); 
    } 
} 

$("#files").change(function(){ 
    readURL(this); 
}); 

Source

Updated Fiddle

+0

Grazie a WcPc, ho una domanda veloce. Come posso inviare questa immagine attraverso un modulo che ho impostato? Come posso avere javascript aggiungere questo file ai dati del mio modulo e quindi quando invio il modulo posso quindi inviare questa immagine come dati con il mio modulo attuale? –

+0

Non hai bisogno di js per questo, basta aggiungere i tag del modulo attorno ad esso: '

' e poi nel tuo PHP (presumo tu usi PHP): 'var tuo_file = $ _POST ['control_name'] 'per esempio' var your_file = $ _POST ['files'] 'Anche se mostri già l'immagine è ancora selezionata nel controllo del fileupload ... – WcPc

3

Basta sfruttare l'evento di modifica del file di elemento:

var file = document.getElementById("files"); 
file.addEventListener("change", function(){ alert(this.value); }); 

mostrato in questo violino: https://jsfiddle.net/pbg44bqu/12/

Problemi correlati