diff --git a/apps/files/index.php b/apps/files/index.php
index 2338cf439e4c625ce2f4d655b832bf0a6fef4827..2f0053915090d43146e4d49a7d739d36dd013c71 100644
--- a/apps/files/index.php
+++ b/apps/files/index.php
@@ -121,6 +121,10 @@ if ($needUpgrade) {
 	// information about storage capacities
 	$storageInfo=OC_Helper::getStorageInfo();
 	$maxUploadFilesize=OCP\Util::maxUploadFilesize($dir);
+	$publicUploadEnabled = \OC_Appconfig::getValue('core', 'shareapi_allow_public_upload', 'yes');
+	if (OC_App::isEnabled('files_encryption')) {
+		$publicUploadEnabled = 'no';
+	}
 
 	OCP\Util::addscript('files', 'fileactions');
 	OCP\Util::addscript('files', 'files');
@@ -138,5 +142,6 @@ if ($needUpgrade) {
 	$tmpl->assign('allowZipDownload', intval(OCP\Config::getSystemValue('allowZipDownload', true)));
 	$tmpl->assign('usedSpacePercent', (int)$storageInfo['relative']);
 	$tmpl->assign('isPublic', false);
+	$tmpl->assign('publicUploadEnabled', $publicUploadEnabled);
 	$tmpl->printPage();
 }
diff --git a/apps/files/templates/index.php b/apps/files/templates/index.php
index fa4cda6f6b2ed1f49818336b27a314830b24bf0a..e07316093685a379d3b092b584e4832860c9acc6 100644
--- a/apps/files/templates/index.php
+++ b/apps/files/templates/index.php
@@ -61,7 +61,7 @@
 	<div id="emptyfolder"><?php p($l->t('Nothing in here. Upload something!'))?></div>
 <?php endif; ?>
 
-<table id="filestable">
+<table id="filestable" data-allow-public-upload="<?php p($_['publicUploadEnabled'])?>">
 	<thead>
 		<tr>
 			<th id='headerName'>
diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php
index 9462844a82b7be7db8a54876744fc6fd57059f2c..3f8e29345a7f2e0118986a6afe4a66f2ed90537c 100644
--- a/apps/files_sharing/public.php
+++ b/apps/files_sharing/public.php
@@ -137,6 +137,9 @@ if (isset($path)) {
 		if (\OCP\App::isEnabled('files_encryption')) {
 			$allowPublicUploadEnabled = false;
 		}
+		if (OC_Appconfig::getValue('core', 'shareapi_allow_public_upload', 'yes') === 'no') {
+			$allowPublicUploadEnabled = false;
+		}
 		if ($linkItem['item_type'] !== 'folder') {
 			$allowPublicUploadEnabled = false;
 		}
@@ -202,6 +205,7 @@ if (isset($path)) {
 			$folder->assign('isCreatable', false);
 			$folder->assign('permissions', OCP\PERMISSION_READ);
 			$folder->assign('isPublic',true);
+			$folder->assign('publicUploadEnabled', 'no');
 			$folder->assign('files', $files);
 			$folder->assign('uploadMaxFilesize', $maxUploadFilesize);
 			$folder->assign('uploadMaxHumanFilesize', OCP\Util::humanFileSize($maxUploadFilesize));
diff --git a/core/js/share.js b/core/js/share.js
index 21e352ee1c656bc94eb165eab4f221a38fc3ea31..4c8fd8741074ca183c2cc5dca9e596284eba794c 100644
--- a/core/js/share.js
+++ b/core/js/share.js
@@ -161,7 +161,12 @@ OC.Share={
 			// respective checkbox should be checked or
 			// not.
 
+			var publicUploadEnabled = $('#filestable').data('allow-public-upload');
+			if (typeof publicUploadEnabled == 'undefined') {
+				publicUploadEnabled = 'no';
+			}
 			var allowPublicUploadStatus = false;
+
 			$.each(data.shares, function(key, value) {
 				if (allowPublicUploadStatus) {
 					return true;
@@ -181,7 +186,7 @@ OC.Share={
 				html += '<div id="linkPass">';
 				html += '<input id="linkPassText" type="password" placeholder="'+t('core', 'Password')+'" />';
 				html += '</div>';
-				if (itemType === 'folder' && (possiblePermissions & OC.PERMISSION_CREATE)) {
+				if (itemType === 'folder' && (possiblePermissions & OC.PERMISSION_CREATE) && publicUploadEnabled === 'yes') {
 					html += '<div id="allowPublicUploadWrapper" style="display:none;">';
 					html += '<input type="checkbox" value="1" name="allowPublicUpload" id="sharingDialogAllowPublicUpload"' + ((allowPublicUploadStatus) ? 'checked="checked"' : '') + ' />';
 					html += '<label for="sharingDialogAllowPublicUpload">' + t('core', 'Allow Public Upload') + '</label>';
diff --git a/settings/admin.php b/settings/admin.php
index f945e56b8c2585dbe914fc33b4265ff15800d173..10e239204f28cd55fec87c185167379d0ec9cf1b 100755
--- a/settings/admin.php
+++ b/settings/admin.php
@@ -38,9 +38,10 @@ if (OC_Request::serverProtocol() === 'https') {
 	$connectedHTTPS = false;
 } 
 $tmpl->assign('isConnectedViaHTTPS', $connectedHTTPS);
-$tmpl->assign('enforceHTTPSEnabled', OC_Config::getValue( "forcessl", false)); 
+$tmpl->assign('enforceHTTPSEnabled', OC_Config::getValue( "forcessl", false));
 
 $tmpl->assign('allowLinks', OC_Appconfig::getValue('core', 'shareapi_allow_links', 'yes'));
+$tmpl->assign('allowPublicUpload', OC_Appconfig::getValue('core', 'shareapi_allow_public_upload', 'yes'));
 $tmpl->assign('allowResharing', OC_Appconfig::getValue('core', 'shareapi_allow_resharing', 'yes'));
 $tmpl->assign('sharePolicy', OC_Appconfig::getValue('core', 'shareapi_share_policy', 'global'));
 $tmpl->assign('forms', array());
diff --git a/settings/templates/admin.php b/settings/templates/admin.php
index d638a26c3fa41db553984afc9bfaca0c35767d5b..057d527db738058c2484d1a5002bca071f0b0cf3 100644
--- a/settings/templates/admin.php
+++ b/settings/templates/admin.php
@@ -145,6 +145,16 @@ if (!$_['internetconnectionworking']) {
 				<em><?php p($l->t('Allow users to share items to the public with links')); ?></em>
 			</td>
 		</tr>
+		<?php if (!\OCP\App::isEnabled('files_encryption')) { ?>
+		<tr>
+			<td <?php if ($_['shareAPIEnabled'] == 'no') print_unescaped('style="display:none"');?>>
+				<input type="checkbox" name="shareapi_allow_public_upload" id="allowPublicUpload"
+				       value="1" <?php if ($_['allowPublicUpload'] == 'yes') print_unescaped('checked="checked"'); ?> />
+				<label for="allowPublicUpload"><?php p($l->t('Allow public uploads'));?></label><br/>
+				<em><?php p($l->t('Allow users to enable others to upload into their publicly shared folders')); ?></em>
+			</td>
+		</tr>
+		<?php } ?>
 		<tr>
 			<td <?php if ($_['shareAPIEnabled'] === 'no') print_unescaped('style="display:none"');?>>
 				<input type="checkbox" name="shareapi_allow_resharing" id="allowResharing"