Vue Bootstrap File Input
Vue File Input - Bootstrap 4 & Material Design
Note: This documentation is for an older version of Bootstrap (v.4). A
newer version is available for Bootstrap 5. We recommend migrating to the latest version of our product - Material Design for
Bootstrap 5.
Go to docs v.5
Vue Bootstrap file input is a field which user can use to upload one or more files (photos, documents or any other file type) from the local storage.
Standard file inputs usually leave a lot to wish for in terms of design, but MDB takes care of that by enhancing them with Material Design best practices.
Most common use examples:
- CSV upload to CRM system
- Avatar picture upload
- Simple GIF upload
Below you can see a number of Bootstrap file inputs created with Material Design for Bootstrap.
Default file input
Default styling for Bootstrap File Input component
<template>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroupFileAddon01">Upload</span>
</div>
<div class="custom-file">
<input type="file" class="custom-file-input" id="inputGroupFile01"
aria-describedby="inputGroupFileAddon01">
<label class="custom-file-label" for="inputGroupFile01">Choose file</label>
</div>
</div>
</template>
Material file input MDB Pro component
Material Design styling for Bootstrap File Input component
<template>
<mdb-file-input sm btnColor="primary" />
</template>
<script>
import {
mdbFileInput
} from 'mdbvue';
export default {
name: "FileInput",
componens: {
mdbFileInput
}
}
</script>
Multiple files input MDB Pro component
<template>
<mdb-file-input multiple sm btnColor="primary" />
</template>
<script>
import {
mdbFileInput
} from 'mdbvue';
export default {
name: "FileInput",
componens: {
mdbFileInput
}
}
</script>
File inputs with photo placeholder MDB Pro component
Add img
property to mdb-file-input
to display photo placeholder and control a its
apperance with circle
and width
properties
<template>
<mdb-container>
<mdb-row>
<mdb-col md="4">
<mdb-file-input @getValue="getFileInputValue" circle btnColor="mdb-color" btn-title="ADD PHOTO" rounded
img="https://mdbootstrap.com/img/Photos/Others/placeholder-avatar.webp" />
</mdb-col>
<mdb-col md="4">
<mdb-file-input @getValue="getFileInputValue" :width="300" btnColor="mdb-color" rounded
btn-title="ADD PHOTO" img="https://mdbootstrap.com/img/Photos/Others/placeholder.webp" />
</mdb-col>
</mdb-row>
</mdb-container>
</template>
<script>
import {
mdbCol,
mdbFileInput,
mdbContainer,
mdbRow
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbCol,
mdbFileInput,
mdbContainer,
mdbRow
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with gradient floating buttons MDB Pro component
<template>
<mdb-row>
<mdb-col sm="12" md="4">
<mdb-file-input @getValue="getFileInputValue" floating icon="paperclip" gradient="peach" />
</mdb-col>
<mdb-col sm="12" md="4">
<mdb-file-input @getValue="getFileInputValue" floating icon="heart" gradient="blue" />
</mdb-col>
<mdb-col>
<mdb-file-input @getValue="getFileInputValue" floating icon="cloud-upload-alt" gradient="purple" />
</mdb-col>
</mdb-row>
</template>
<script>
import {
mdbCol,
mdbFileInput,
mdbRow
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbCol,
mdbFileInput,
mdbRow
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with large floating buttons MDB Pro component
<template>
<mdb-row>
<mdb-col sm="12" md="4">
<mdb-file-input @getValue="getFileInputValue" floating lg icon="paperclip" btnColor="pink" />
</mdb-col>
<mdb-col sm="12" md="4">
<mdb-file-input @getValue="getFileInputValue" floating lg icon="heart" btnColor="cyan" />
</mdb-col>
<mdb-col>
<mdb-file-input @getValue="getFileInputValue" floating lg icon="cloud-upload-alt" btnColor="amber" />
</mdb-col>
</mdb-row>
</template>
<script>
import {
mdbCol,
mdbFileInput,
mdbRow
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbCol,
mdbFileInput,
mdbRow
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with rounded gradient buttons MDB Pro component
<template>
<mdb-container>
<mdb-file-input @getValue="getFileInputValue" sm rounded gradient="purple" />
<mdb-file-input @getValue="getFileInputValue" rounded gradient="aqua" />
<mdb-file-input @getValue="getFileInputValue" rounded lg gradient="peach" />
</mdb-container>
</template>
<script>
import {
mdbFileInput,
mdbContainer
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbFileInput,
mdbContainer
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with rounded outline buttons MDB Pro component
<template>
<mdb-container>
<mdb-file-input @getValue="getFileInputValue" rounded sm outline="success" />
<mdb-file-input @getValue="getFileInputValue" rounded outline="secondary" />
<mdb-file-input @getValue="getFileInputValue" rounded lg outline="warning" />
</mdb-container>
</template>
<script>
import {
mdbFileInput,
mdbContainer
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbFileInput,
mdbContainer
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with colorful buttons MDB Pro component
<template>
<mdb-container>
<mdb-file-input @getValue="getFileInputValue" sm btnColor="unique" />
<mdb-file-input @getValue="getFileInputValue" btnColor="light-blue" />
<mdb-file-input @getValue="getFileInputValue" lg btnColor="primary" />
</mdb-container>
</template>
<script>
import {
mdbFileInput,
mdbContainer
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbFileInput,
mdbContainer
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with outline buttons MDB Pro component
<template>
<mdb-container>
<mdb-file-input @getValue="getFileInputValue" sm outline="info" />
<mdb-file-input @getValue="getFileInputValue" outline="default" />
<mdb-file-input @getValue="getFileInputValue" lg outline="danger" />
</mdb-container>
</template>
<script>
import {
mdbFileInput,
mdbContainer
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbFileInput,
mdbContainer
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs with buttons with icons MDB Pro component
<template>
<mdb-row>
<mdb-col sm="12" md="6">
<mdb-file-input @getValue="getFileInputValue" icon="cloud-upload-alt" sm gradient="blue" />
<mdb-file-input @getValue="getFileInputValue" icon="cloud-upload-alt" icon-right sm rounded
btnColor="pink" />
</mdb-col>
<mdb-col>
<mdb-file-input @getValue="getFileInputValue" icon="cloud-upload-alt" outline="info" />
<mdb-file-input @getValue="getFileInputValue" icon="upload" icon-right rounded lg outline="danger" />
</mdb-col>
</mdb-row>
</template>
<script>
import {
mdbFileInput,
mdbCol,
mdbRow
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbFileInput,
mdbCol,
mdbRow
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
}
}
};
</script>
File inputs within cards MDB Pro component
<template>
<mdb-row>
<mdb-col sm="12" md="6">
<mdb-card class="indigo py-4 px-5 z-depth-2">
<mdb-file-input @getValue="getFileInputValue" icon="cloud-upload-alt" sm outline="white" />
<mdb-file-input @getValue="getFileInputValue" icon="cloud-upload-alt" sm rounded
text-field-title="Upload one more" outline="white" />
</mdb-card>
</mdb-col>
<mdb-col sm="12" md="6">
<mdb-card class="mdb-color lighten-4 py-4 px-5 z-depth-2">
<mdb-file-input @getValue="getFileInputValue" floating text-white icon="paperclip" gradient="peach" />
<mdb-file-input @getValue="getFileInputValue" floating text-white icon="paperclip" gradient="peach" />
<mdb-file-input @getValue="getFileInputValue" floating text-white icon="paperclip" gradient="peach" />
</mdb-card>
</mdb-col>
</mdb-row>
</template>
<script>
import {
mdbCol,
mdbFileInput,
mdbRow,
mdbCard
} from "mdbvue";
export default {
name: "FileInputPage",
components: {
mdbCol,
mdbFileInput,
mdbRow,
mdbCard
},
data() {
return {
test: 'Test value'
};
},
methods: {
getFileInputValue(val) {
console.log(val);
},
resetFileInput() {
this.$refs.fileInput.reset();
}
}
};
</script>
File Input - API
In this section you will find advanced information about the File Input component. You will learn which modules are required in this component, what are the possibilities of configuring the component, and what events and methods you can use to work with it.
Import statement
<script>
import {
mdbFileInput
} from 'mdbvue';
</script>
API Reference: Properties
Name | Type | Default | Description | Example |
---|---|---|---|---|
accept |
String | image/jpeg, image/png, image/tiff |
Specifies accepted type of files. | <mdb-file-input accept="image/png" ... /> |
btnColor |
String | default |
Specifies button's color. | <mdb-file-input btnColor="primary" ... /> |
btnTitle |
String | Choose file |
Specifies button's title. | <mdb-file-input btnTitle="Choose Your file" ...
/> |
multiple |
Boolean | false |
Uploading multiple files. | <mdb-file-input multiple ... /> |
textFieldTitle |
String | Upload your file |
Specifies input's placeholder. | <mdb-file-input textFieldTitle="Upload your files" ...
/> |
rounded |
Boolean | false |
Changes button's style to rounded. | <mdb-file-input rounded /> |
sm |
Boolean | false |
Sets button's size to small. | <mdb-file-input sm /> |
lg |
Boolean | false |
Sets button's size to large. | <mdb-file-input lg /> |
outline |
Boolean | false |
Sets button's style to outline. | <mdb-file-input outline /> |
floating |
Boolean | false |
Sets button's style to floating. | <mdb-file-input floating /> |
gradient |
String |
|
Sets button's background to gradient. | <mdb-file-input gradient="peach" /> |
icon |
String |
|
Displays an icon on the left. | <mdb-file-input icon="upload" /> |
iconRight |
String |
|
Displays an icon on the right. | <mdb-file-input icon-right="upload" /> |
img |
Boolean |
|
Changes file input's display to image placeholder | <mdb-file-input img /> |
src |
String | "https://mdbootstrap.com/img/Photos/Others/placeholder.webp" |
Sets source of image placeholder | <mdb-file-input img
src="https://mdbootstrap.com/img/Photos/Others/placeholder.webp" /> |
circle |
Boolean | false |
Changes an image placeholder's style to circle. A source image should have ratio 1:1 to avoid distortion. | <mdb-file-input img circle /> |
width |
Number | 150 |
Sets width of an image placeholder (in pixels). | <mdb-file-input img :width="130" /> |
API Reference: Methods
Name | Parameters | Description | Example |
---|---|---|---|
v-on:getValue |
value | Returns input value. Use this method instead of v-model to handle input value changes. | <mdb-file-input @getValue="getFileInputValue"
/> |