diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploadScreen.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploadScreen.java
index 453eb0c..e086af1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploadScreen.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploadScreen.java
@@ -32,6 +32,7 @@
   ImageUploadScreen() {
     setStyleName("imagare-image-upload-screen");
 
+    add(new UploadByFileSelection());
     add(new UploadByPastePanel());
     uploadedPanel = new UploadedImagesPanel();
     add(uploadedPanel);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploader.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploader.java
index fb912b9..511c77e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/ImageUploader.java
@@ -22,12 +22,17 @@
 public class ImageUploader {
 
   public static final void uploadImage(String imageData) {
-    uploadImage("All-Projects", imageData);
+    uploadImage("All-Projects", imageData, null);
   }
 
-  public static final void uploadImage(String project, String imageData) {
+  public static final void uploadImage(String imageData, String fileName) {
+    uploadImage("All-Projects", imageData, fileName);
+  }
+
+  public static final void uploadImage(String project, String imageData, String fileName) {
     ImageInput in = ImageInput.create();
     in.image_data(imageData);
+    in.file_name(fileName);
 
     new RestApi("projects").id(project).view(Plugin.get().getPluginName(), "images")
         .post(in, new AsyncCallback<ImageInfo>() {
@@ -45,6 +50,7 @@
 
   private static class ImageInput extends JavaScriptObject {
     final native void image_data(String d) /*-{ this.image_data = d; }-*/;
+    final native void file_name(String n) /*-{ this.file_name = n; }-*/;
 
     static ImageInput create() {
       return (ImageInput) createObject();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByFileSelection.java b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByFileSelection.java
new file mode 100644
index 0000000..d7ede85
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/imagare/client/UploadByFileSelection.java
@@ -0,0 +1,50 @@
+// Copyright (C) 2014 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.imagare.client;
+
+import com.google.gwt.user.client.ui.FileUpload;
+import com.google.gwt.user.client.ui.FormPanel;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+
+public class UploadByFileSelection extends HorizontalPanel {
+  UploadByFileSelection() {
+    this("All-Projects");
+  }
+
+  UploadByFileSelection(String project) {
+    init0();
+
+    FormPanel form = new FormPanel();
+    FileUpload upload = new FileUpload();
+    upload.setName("Select Image");
+    upload.getElement().setAttribute("onChange", "imagareSubmit(event)");
+    form.add(upload);
+
+    add(form);
+  }
+
+  private static native void init0() /*-{
+    $wnd.imagareSubmit = function submit(event) {
+      var f = event.target.files[0];
+      if (f) {
+        var r = new FileReader();
+        r.onload = function(e) {
+          @com.googlesource.gerrit.plugins.imagare.client.ImageUploader::uploadImage(Ljava/lang/String;Ljava/lang/String;)(e.target.result, f.name);
+        }
+        r.readAsDataURL(f);
+      }
+    }
+  }-*/;
+}
