diff --git a/src/components/media_upload/media_upload.js b/src/components/media_upload/media_upload.js
index 8ae86a8de52e512f983c1dd0389e590af211be03..3f2e39641b2b174be31c80a66539134c116e04e1 100644
--- a/src/components/media_upload/media_upload.js
+++ b/src/components/media_upload/media_upload.js
@@ -11,11 +11,24 @@ const mediaUpload = {
       const file = target.files[0]
       const formData = new FormData()
       formData.append('media', file)
+
+      self.$emit('uploading')
+      self.uploading = true
+
       statusPosterService.uploadMedia({ store, formData })
         .then((fileData) => {
           self.$emit('uploaded', fileData)
+          self.uploading = false
+        }, (error) => {
+          self.$emit('upload-failed')
+          self.uploading = false
         })
     })
+  },
+  data () {
+    return {
+      uploading: false
+    }
   }
 }
 
diff --git a/src/components/media_upload/media_upload.vue b/src/components/media_upload/media_upload.vue
index a62d831698ba6f13a1fbcf2ef44bc815dcf4fa5b..f2f0b83f9a39a6b9f9c12c46e4803cb9cab43515 100644
--- a/src/components/media_upload/media_upload.vue
+++ b/src/components/media_upload/media_upload.vue
@@ -1,7 +1,8 @@
 <template>
   <div class="media-upload">
     <label class="btn btn-default">
-      <i class="fa icon-upload"></i>
+      <i class="fa icon-spin4 animate-spin" v-if="uploading"></i>
+      <i class="fa icon-upload" v-if="!uploading"></i>
       <input type=file style="position: fixed; top: -100em"></input>
     </label>
   </div>