Formatting File Upload Input with Bootstrap

If you’re using file upload forms in your Bootstrap themed website and would like to format the button and the field nicely, take a peek at this article by Cory LaViska. He nails it.

 

A small example which produces an input-group like this (“Fil” means file in Swedish):

image

<div class="editor-label">
    <label>Fil</label>
    <div class="input-group">
        <span class="input-group-btn">
            <span class=" btn btn-default btn-file">
                välj fil... <input type="file" name="data" id="data">
            </span>
        </span>
        <input type="text" id="valdfil" class="form-control" readonly />
    </div>
</div>
<script type="text/javascript">

    $(document).ready(function () {
        $(document).on('change', '.btn-file :file', function () {
            var input = $(this),
                numFiles = input.get(0).files ? input.get(0).files.length : 1,
                label = input.val().replace(/\\/g, '/').replace(/.*\//, '');
            input.trigger('fileselect', [numFiles, label]);
        });

        $('.btn-file :file').on('fileselect', function (event, numFiles, label) {
            console.log(numFiles);
            console.log(label);
            $("#valdfil").val(label);
        });
    });

</script>

You must also add these CSS lines:

.btn-file {
    position: relative;
    overflow: hidden;
}
.btn-file input[type=file] {
    position: absolute;
    top: 0;
    right: 0;
    min-width: 100%;
    min-height: 100%;
    font-size: 100px;
    text-align: right;
    filter: alpha(opacity=0);
    opacity: 0;
    outline: none;
    background: white;
    cursor: inherit;
    display: block;
}

1 Comment

Comments have been disabled for this content.