vue-file-uploader

Simple, but convenient and customizable file uploader

Usage no npm install needed!

<script type="module">
  import vueFileUploader from 'https://cdn.skypack.dev/vue-file-uploader';
</script>

README

vue-file-upload

This components makes file uploading easier.

Installation

npm install vue-file-uploader

Usage

import FileUploader from 'vue-file-uploader';

// Register file uploader globally
Vue.component('file-uploader', FileUploader);

// Or use it locally where you need it
components: {
    FileUploader
},

methods: {
    onFilesUploaded(files) {
    },

    onUploadFail(errors) {
    },
}

...

<file-uploader
    :images-only="true"
    mime-types="passed-to-accept-field-of-file-input"
    @uploaded="onFilesUploaded"
    @fail="onUploadFail"
    multiple
    button-text="Select me, then just upload me, satisfaction"
    :drop="false"
></file-uploader>

Component provides a way to customize its default look by using default slot.

Also you can customize progressbar. Use progressbar slot with scope param progress to receive percentage of progress in your custom progressbar.

// In vue < 2.5
<file-uploader>
    <template slot="progressbar" scope="params">
        <div class="progressbar" :style="{ width: params.progress + '%' }"></div>
    </template>
</file-uploader>

// In vue 2.5+
<file-uploader>
    <div slot="progressbar" scope="params" class="progressbar" :style="{ width: params.progress + '%' }"></div>
</file-uploader>

drop parameter allows to transform file uploader to drag-n-drop zone. There is a class .dropzone that can be used to created styled dropzone.

// Drag and drop
<file-uploader :drop="true">
    <div class="dropzone">Drop files here</div>
</file-uploader>