diff --git a/js/redactor-plugins.js b/js/redactor-plugins.js
index 34eba20cdc6ba50ad008db393a2a2dfbfaefdd32..48e8f60d1c5e1463fb61921b397cf646f0730316 100644
--- a/js/redactor-plugins.js
+++ b/js/redactor-plugins.js
@@ -774,3 +774,66 @@ RedactorPlugins.video = function()
 
 	};
 };
+
+RedactorPlugins.imagepaste = function() {
+  return {
+    init: function() {
+      if (this.utils.browser('webkit') && navigator.userAgent.indexOf('Chrome') === -1)
+      {
+        var arr = this.utils.browser('version').split('.');
+        if (arr[0] < 536)
+          return true;
+      }
+
+      // paste except opera (not webkit)
+      if (this.utils.browser('opera'))
+          return true;
+
+      this.$editor.on('paste.imagepaste', $.proxy(this.imagepaste.buildEventPaste, this));
+    },
+    buildEventPaste: function(e)
+    {
+      var event = e.originalEvent || e,
+          fileUpload = false,
+          files = [],
+          i, file,
+          cd = event.clipboardData;
+
+      if (typeof(cd) === 'undefined') return;
+
+      if (cd.items && cd.items.length)
+      {
+        for (i = 0, k = cd.items.length; i < k; i++) {
+          if (cd.kind == 'file' && cd.type.indexOf('image/') !== -1) {
+            file = cd.items[i].getAsFile();
+            if (file !== null)
+              files.push(file);
+            }
+        }
+      }
+      else if (cd.files && cd.files.length)
+      {
+        files = cd.files
+      }
+      else if (cd.types.length) {
+        for (i = 0, k = cd.types.length; i < k; i++) {
+          console.log(cd.types[i], cd.getData(cd.types[i]));
+          if (cd.types[i].indexOf('image/') != -1) {
+            var data = cd.getData(cd.types[i]);
+            if (data.length)
+                files.push(new Blob([data]));
+          }
+        }
+      }
+      if (files.length) {
+        // clipboard upload
+        this.selection.save();
+        this.buffer.set();
+        this.clean.singleLine = false;
+        for (i = 0, k = files.length; i < k; i++)
+          this.upload.directUpload(files[i], event);
+        return false;
+      }
+    }
+  };
+};