vue-image-chooser
This is vue plugin with simple component for choosing image. It supports easy implementation for image upload to the backend.
Installation
npm i vue-image-chooser --save
Registring plugin:
import VueImageChooser from 'vue-image-chooser'
Vue.use(VueImageChooser)
This will make vue-image-chooser component globaly available. Bellow is example how to use it with axios library
<div class="MyContent">
  <h1>Click on chooser to choose image</h1>
  <div style="width:400px;margin: 0 auto">
    <vue-image-chooser name="image-chooser" @change="uploadFile" :progress="progress" :error="error"/>
  </div>
</div>
export default {
  data() {
    return {
      progress: null,
      error: null,
    }
  },
  methods: {
    uploadFile(file) {
      this.progres = 0;
      let formData = new FormData();
      formData.append('image', file);
      var config = {
        onUploadProgress: progressEvent => {
          var percentCompleted = Math.round(
            (progressEvent.loaded * 100) / progressEvent.total
          )
          this.progress = percentCompleted
        }
      }
      try {
        const { data } = await axios.post(
          '/api/route/to/upload/image',
          formData,
          config
        )
      } catch (e) {
        this.error = 'Error has occured'
      }
    }
  }
}
Usage
The component takes four props:
- name(String): Required prop, must be unique (you can consider it like id)
- progress(Number): Number between- 0-100. If it is- nullor- 100component consider uploading process finished.
- error(String): Error message in case that server responded with error
- height(String): Default is- 350px
The component emits change event with single file as data, when it recieve an image, after it can be uploaded as described above)
 
             
             
             
             
            