diff --git a/files/css/files.css b/files/css/files.css
index a886958f13714ac2d94d6b23252a26f0be342ba0..d45d93441deb856e4cf9257cfc3a244dcbc2ffd5 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -157,4 +157,5 @@ table td.delete { background-image:url('../img/delete.png'); }
 #selectedActions{
 	float:right;
 	display:none;
-}
\ No newline at end of file
+}
+#uploadsize-message{display:none}
\ No newline at end of file
diff --git a/files/js/files.js b/files/js/files.js
index f1c00650d0a233f744b6e08232ad7c92ccd1df89..dc59dda57e0a7680be6166d6f1447f47596af466 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -153,40 +153,55 @@ $(document).ready(function() {
 		var uploadId=form.attr('data-upload-id');
 		var files=this.files;
 		var target=form.children('iframe');
-		target.load(function(){
-			var response=jQuery.parseJSON(target.contents().find('body').text());
-			//set mimetype and if needed filesize
-			if(response){
-				for(var i=0;i<response.length;i++){
-					var file=response[i];
-					$('tr[data-file="'+file.name+'"]').attr('data-mime',file.mime);
-					if(size=='Pending'){
-						$('tr[data-file='+file.name+'] td.filesize').text(file.size);
+		var totalSize=0;
+		for(var i=0;i<files.length;i++){
+			totalSize+=files[i].size;
+		}
+		if(totalSize>$('#max_upload').val()){
+			$( "#uploadsize-message" ).dialog({
+				modal: true,
+				buttons: {
+					Close: function() {
+						$( this ).dialog( "close" );
 					}
-					FileList.loadingDone(file.name);
 				}
+			});
+		}else{
+			target.load(function(){
+				var response=jQuery.parseJSON(target.contents().find('body').text());
+				//set mimetype and if needed filesize
+				if(response){
+					for(var i=0;i<response.length;i++){
+						var file=response[i];
+						$('tr[data-file="'+file.name+'"]').attr('data-mime',file.mime);
+						if(size=='Pending'){
+							$('tr[data-file='+file.name+'] td.filesize').text(file.size);
+						}
+						FileList.loadingDone(file.name);
+					}
+				}
+			});
+			form.submit();
+			var date=new Date();
+			var uploadTime=formatDate(date);
+			for(var i=0;i<files.length;i++){
+				if(files[i].size>0){
+					var size=simpleFileSize(files[i].size);
+				}else{
+					var size='Pending';
+				}
+				FileList.addFile(files[i].name,size,uploadTime,true);
 			}
-		});
-		form.submit();
-		var date=new Date();
-		var uploadTime=formatDate(date);
-		for(var i=0;i<files.length;i++){
-			if(files[i].size>0){
-				var size=simpleFileSize(files[i].size);
-			}else{
-				var size='Pending';
-			}
-			FileList.addFile(files[i].name,size,uploadTime,true);
+
+			//clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading
+			var clone=form.clone();
+			uploadId++;
+			clone.attr('data-upload-id',uploadId);
+			clone.attr('target','file_upload_target_'+uploadId);
+			clone.children('iframe').attr('name','file_upload_target_'+uploadId)
+			clone.insertBefore(form);
+			form.hide();
 		}
-		
-		//clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading
-		var clone=form.clone();
-		uploadId++;
-		clone.attr('data-upload-id',uploadId);
-		clone.attr('target','file_upload_target_'+uploadId);
-		clone.children('iframe').attr('name','file_upload_target_'+uploadId)
-		clone.insertBefore(form);
-		form.hide();
 	});
 	
 	//add multiply file upload attribute to all browsers except konqueror (which crashes when it's used)
diff --git a/files/templates/index.php b/files/templates/index.php
index 18b805529a93072eca62bca4b1a746ce74e90303..b0d4f556f4a9bd18312cefec4be54ec523fd5399 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -43,4 +43,10 @@
 	</tbody>
 </table>
 
+<div id="uploadsize-message" title="Upload to large">
+	<p>
+		<?php echo $l->t( 'The files you are trying to upload exceed the maximum size for file uploads on this server.' ); ?>
+	</p>
+</div>
+
 <span id="file_menu"/>