diff --git a/src/Content/Conversation.php b/src/Content/Conversation.php
index 249190b1a..7cf207627 100644
--- a/src/Content/Conversation.php
+++ b/src/Content/Conversation.php
@@ -445,6 +445,7 @@ class Conversation
 		$this->page->registerFooterScript(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.js'));
 		$this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css'));
 		$this->page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css'));
+		$this->page->registerStylesheet(Theme::getPathForFile('vendor/enyo/dropzone/dist/min/dropzone.min.css'));
 
 		$live_update_div = '';
 
diff --git a/src/Core/ACL.php b/src/Core/ACL.php
index 4ed8d602a..45f8e1128 100644
--- a/src/Core/ACL.php
+++ b/src/Core/ACL.php
@@ -59,8 +59,10 @@ class ACL
 
 		$page->registerFooterScript(Theme::getPathForFile('asset/typeahead.js/dist/typeahead.bundle.js'));
 		$page->registerFooterScript(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.js'));
+		$page->registerFooterScript(Theme::getPathForFile('../vendor/enyo/dropzone/dist/min/dropzone.min.js'));
 		$page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput.css'));
 		$page->registerStylesheet(Theme::getPathForFile('js/friendica-tagsinput/friendica-tagsinput-typeahead.css'));
+		$page->registerStylesheet(Theme::getPathForFile('../vendor/enyo/dropzone/dist/min/dropzone.min.css'));
 
 		$contacts = self::getValidMessageRecipientsForUser(DI::userSession()->getLocalUserId());
 
diff --git a/src/Module/Item/Compose.php b/src/Module/Item/Compose.php
index d44fe2cd7..1bb56a3f7 100644
--- a/src/Module/Item/Compose.php
+++ b/src/Module/Item/Compose.php
@@ -164,7 +164,7 @@ class Compose extends BaseModule
 		$this->page->registerFooterScript(Theme::getPathForFile('js/ajaxupload.js'));
 		$this->page->registerFooterScript(Theme::getPathForFile('js/linkPreview.js'));
 		$this->page->registerFooterScript(Theme::getPathForFile('js/compose.js'));
-
+                $this->page->registerFooterScript(Theme::getPathForFile('../vendor/enyo/dropzone/dist/min/dropzone.min.js'));
 		$contact = Contact::getById($a->getContactId());
 
 		if ($this->pConfig->get(DI::userSession()->getLocalUserId(), 'system', 'set_creation_date')) {
diff --git a/view/templates/item/compose.tpl b/view/templates/item/compose.tpl
index 50e21b149..1143a5efb 100644
--- a/view/templates/item/compose.tpl
+++ b/view/templates/item/compose.tpl
@@ -1,10 +1,17 @@
-<div class="generic-page-wrapper">
+<div class="generic-page-wrapper"css>
 	<h2>{{$l10n.compose_title}}</h2>
     {{if $l10n.always_open_compose}}
 	<p>{{$l10n.always_open_compose nofilter}}</p>
 	{{/if}}
 	<div id="profile-jot-wrapper">
-		<form class="comment-edit-form" data-item-id="{{$id}}" id="comment-edit-form-{{$id}}" action="compose/{{$type}}" method="post">
+                <!--form action="/media/photo/upload?response=url&album="
+                class="dropzone" id="my-great-dropzone"></form-->
+                <!--form id="dropzone" action="/media/photo/upload?response=json&album=" class="dropzone" method="post" enctype="multipart/form-data">
+                    <div class="fallback">
+                        <input name="file" type="file" multiple />
+                    </div>
+                </form-->
+		<form class="comment-edit-form" data-item-id="{{$id}}" id="comment-edit-form-{{$id}}" action="compose/{{$type}}" method="post"  class="dropzone">
 		    {{*<!--<input type="hidden" name="return" value="{{$return_path}}" />-->*}}
 			<input type="hidden" name="post_id_random" value="{{$rand_num}}" />
 			<input type="hidden" name="post_type" value="{{$posttype}}" />
@@ -71,6 +78,7 @@
 				<span role="presentation" id="character-counter" class="grey text-info"></span>
 				<button type="button" class="btn btn-defaul" onclick="preview_comment({{$id}});" id="comment-edit-preview-link-{{$id}}" tabindex="5"><i class="fa fa-eye"></i> {{$l10n.preview}}</button>
 				<button type="submit" class="btn btn-primary" id="comment-edit-submit-{{$id}}" name="submit" tabindex="4"><i class="fa fa-envelope"></i> {{$l10n.submit}}</button>
+                                <div id="dz-previewsCompose" class="dropzone-previews"></div>
 			</p>
 
 			<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
@@ -94,3 +102,41 @@
 		</form>
 	</div>
 </div>
+<script>
+    var dropzoneCompose = new Dropzone(document.body,  { // camelized version of the `id`
+    paramName: "userfile", // The name that will be used to transfer the file
+    maxFilesize: 2, // MB
+    previewsContainer: '#dz-previewsCompose',
+    preventDuplicates: true,
+    clickable: true,
+    thumbnailWidth: 100,
+    thumbnailHeight: 100,
+    url: "/media/photo/upload?response=url&album=",
+    accept: function(file, done) {
+      done();
+    },
+    init: function() {
+        this.on("success", function(file, serverResponse) {
+                var target = $(':focus').closest('.comment-edit-form').find('.comment-edit-text');
+                var resp = $(serverResponse).find('div#content').text()
+                if (target.setRangeText) {
+                    //if setRangeText function is supported by current browser
+                    target.setRangeText(" " + $.trim(resp) + " ")
+                } else {
+                    target.focus()
+                    document.execCommand('insertText', false /*no UI*/, $.trim(resp));
+                }
+        });
+    },
+  });
+  document.onpaste = function(event){
+    const items = (event.clipboardData || event.originalEvent.clipboardData).items;
+    items.forEach((item) => {
+      if (item.kind === 'file') {
+        // adds the file to your dropzone instance
+        console.log(item);
+        dropzoneCompose.addFile(item.getAsFile())
+      }
+    })
+  }
+</script>
diff --git a/view/theme/frio/templates/comment_item.tpl b/view/theme/frio/templates/comment_item.tpl
index 7bce14ee1..ee09b36f3 100644
--- a/view/theme/frio/templates/comment_item.tpl
+++ b/view/theme/frio/templates/comment_item.tpl
@@ -1,8 +1,8 @@
 
 {{if $threaded}}
-<div class="comment-wwedit-wrapper threaded" id="comment-edit-wrapper-{{$id}}">
+<div class="comment-wwedit-wrapper threaded dropzone" id="comment-edit-wrapper-{{$id}}">
 {{else}}
-<div class="comment-wwedit-wrapper" id="comment-edit-wrapper-{{$id}}">
+<div class="comment-wwedit-wrapper dropzone" id="comment-edit-wrapper-{{$id}}">
 {{/if}}
 	<form class="comment-edit-form" data-item-id="{{$id}}" id="comment-edit-form-{{$id}}" action="item" method="post">
 		<input type="hidden" name="profile_uid" value="{{$profile_uid}}" />
@@ -61,6 +61,50 @@
 
 		<div class="comment-edit-end clear"></div>
 	</form>
+        <div id="dz-preview-{{$id}}" class="dropzone-preview"></div>
 	<div id="comment-edit-preview-{{$id}}" class="comment-edit-preview" style="display:none;"></div>
 </div>
 
+<script>
+  Dropzone.autoDiscover = false;
+  var dropzone{{$id}} = new Dropzone( '#comment-edit-wrapper-{{$id}}', {
+  //var dropzone{{$id}} = new Dropzone( document.body, {
+    paramName: "userfile", // The name that will be used to transfer the file
+    maxFilesize: 6, // MB
+    previewsContainer: '#dz-preview-{{$id}}',
+    preventDuplicates: true,
+    clickable: true,
+    thumbnailWidth: 100,
+    thumbnailHeight: 100,
+    url: "/media/photo/upload?response=url&album=",
+    accept: function(file, done) {
+      done();
+    },
+    init: function() {
+      this.on("success", function(file, serverResponse) {
+        var target = $('#comment-edit-text-{{$id}}')
+        var resp = $(serverResponse).find('div#content').text()
+        if (target.setRangeText) {
+          //if setRangeText function is supported by current browser
+          target.setRangeText(" " + $.trim(resp) + " ")
+        } else {
+          target.focus()
+          document.execCommand('insertText', false /*no UI*/, " " + $.trim(resp) + " ");
+        }
+      });
+    },
+  });
+
+  $('#comment-edit-wrapper-{{$id}}').on('paste', function(event){
+    const items = (event.clipboardData || event.originalEvent.clipboardData).items;
+    items.forEach((item) => {
+      if (item.kind === 'file') {
+        // adds the file to your dropzone instance
+        console.log(item);
+        dropzone{{$id}}.addFile(item.getAsFile())
+      }
+    })
+  })
+
+
+</script>
diff --git a/view/theme/frio/templates/head.tpl b/view/theme/frio/templates/head.tpl
index 7851dacbd..b506ad278 100644
--- a/view/theme/frio/templates/head.tpl
+++ b/view/theme/frio/templates/head.tpl
@@ -55,6 +55,8 @@
 	media="screen" />
 <link rel="stylesheet" href="view/theme/frio/css/font-awesome.custom.css?v={{$smarty.const.FRIENDICA_VERSION}}"
 	type="text/css" media="screen" />
+<link rel="stylesheet" href="vendor/enyo/dropzone/dist/min/dropzone.min.css?v={{$smarty.const.FRIENDICA_VERSION}}"
+	type="text/css" media="screen" />
 
 {{foreach $stylesheets as $stylesheetUrl => $media}}
 	<link rel="stylesheet" href="{{$stylesheetUrl}}" type="text/css" media="{{$media}}" />
@@ -137,6 +139,7 @@
 		<script type="text/javascript" src="view/theme/frio/js/hovercard.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
 	{{/if}}
 	<script type="text/javascript" src="view/theme/frio/js/textedit.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
+        <script type="text/javascript" src="vendor/enyo/dropzone/dist/min/dropzone.min.js?v={{$smarty.const.FRIENDICA_VERSION}}"></script>
 
 	{{* Include the strings which are needed for some js functions (e.g. translation)
 They are loaded into the html <head> so that js functions can use them *}}
diff --git a/view/theme/frio/templates/jot.tpl b/view/theme/frio/templates/jot.tpl
index c38e8531c..285b8e8d7 100644
--- a/view/theme/frio/templates/jot.tpl
+++ b/view/theme/frio/templates/jot.tpl
@@ -70,7 +70,7 @@
 			</div>
 		</div>
 
-		<div id="jot-modal-body" class="modal-body">
+		<div id="jot-modal-body" class="modal-body dropzone">
 			<form id="profile-jot-form" action="{{$action}}" method="post">
 				<div id="profile-jot-wrapper" aria-labelledby="jot-text-lnk" role="tabpanel" aria-hidden="false">
 					<div>
@@ -152,6 +152,7 @@
 				<div id="jot-fbrowser-wrapper" class="minimize" aria-labelledby="jot-browser-link" role="tabpanel" aria-hidden="true"></div>
 
 			</form>
+                        <div id="dz-preview-jot" class="dropzone-preview"></div>
 
 			{{if $content}}<script type="text/javascript">initEditor();</script>{{/if}}
 		</div>
@@ -178,3 +179,48 @@ can load different content into the jot moadl (e.g. the item edit jot)
 		this.style.height = this.contentWindow.document.body.offsetHeight + 'px';
 	});
 </script>
+<script>
+  Dropzone.autoDiscover = false;
+  var dropzoneJot = new Dropzone( '#jot-modal-body', {
+  //var dropzone{{$id}} = new Dropzone( document.body, {
+    paramName: "userfile", // The name that will be used to transfer the file
+    maxFilesize: 6, // MB
+    previewsContainer: '#dz-preview-jot',
+    url: "/media/photo/upload?response=url&album=",
+    accept: function(file, done) {
+      if (file.name == "justinbieber.jpg") {
+        done("Naha, you don't.");
+      } else {
+        done();
+      }
+    },
+    init: function() {
+      this.on("success", function(file, serverResponse) {
+        var target = $('#profile-jot-text')
+        var resp = $(serverResponse).find('div#content').text()
+        if (target.setRangeText) {
+          //if setRangeText function is supported by current browser
+          target.setRangeText(" " + $.trim(resp) + " ")
+        } else {
+          target.focus()
+          document.execCommand('insertText', false /*no UI*/, " " + $.trim(resp) + " ");
+        }
+      });
+    },
+  });
+
+//  document.onpaste = function(event){
+  $('#jot-modal-body').on('paste', function(event){
+    const items = (event.clipboardData || event.originalEvent.clipboardData).items;
+    items.forEach((item) => {
+      if (item.kind === 'file') {
+        // adds the file to your dropzone instance
+        console.log(item);
+        dropzoneJot.addFile(item.getAsFile())
+      }
+    })
+  })
+
+
+</script>
+