File browser

Use our custom file inputs for consistent cross-browser styling, built-in customization, and lightweight JavaScript.


Default

The file input is the most gnarly of the bunch and requires additional JavaScript if you’d like to hook them up with functional Choose file… and selected file name text.


<div class="form-file">
  <input type="file" class="form-file-input" id="customFile">
  <label class="form-file-label" for="customFile">
    <span class="form-file-text">Choose file...</span>
    <span class="form-file-button btn-primary">Browse</span>
  </label>
</div>
				

Add the disabled attribute to the <input> and the custom markup will be updated to appear disabled.


<div class="form-file">
  <input type="file" class="form-file-input" id="customFileDisabled" disabled="">
  <label class="form-file-label" for="customFileDisabled">
    <span class="form-file-text">Choose file...</span>
    <span class="form-file-button btn-primary">Browse</span>
  </label>
</div>
				

Longer placeholder text is truncated and an ellipsis is added when there’s not enough space.


<div class="form-file">
  <input type="file" class="form-file-input" id="customFileLong">
  <label class="form-file-label" for="customFileLong">
    <span class="form-file-text">Lorem ipsum posuere consectetur est at lobortis nulla vitae elit libero a pharetra augue fusce dapibus tellus ac cursus commodo tortor mauris condimentum nibh ut fermentum massa justo sit amet risus cras mattis consectetur purus sit amet fermentum</span>
    <span class="form-file-button btn-primary">Browse</span>
  </label>
</div>
				

We hide the default file <input> via opacity and instead style the <label>, and declare a width and height on the <input> for proper spacing for surrounding content.

Sizing

You may also choose from small and large file inputs to match our similarly sized text inputs.


<div class="form-file form-file-lg mb-3">
  <input type="file" class="form-file-input" id="customFileLg">
  <label class="form-file-label" for="customFileLg">
    <span class="form-file-text">Choose file...</span>
    <span class="form-file-button btn-primary">Browse</span>
  </label>
</div>
<div class="form-file form-file-sm">
  <input type="file" class="form-file-input" id="customFileSm">
  <label class="form-file-label" for="customFileSm">
    <span class="form-file-text">Choose file...</span>
    <span class="form-file-button btn-primary">Browse</span>
  </label>
</div>