diff --git a/files/ajax/upload.php b/files/ajax/upload.php
index 76ea65fe933a03c8058549c03be4e22cefba5719..b04796e3248591ae38a61397b1b708facb946248 100644
--- a/files/ajax/upload.php
+++ b/files/ajax/upload.php
@@ -47,11 +47,10 @@ $result=array();
 if(strpos($dir,'..') === false){
 	$fileCount=count($files['name']);
 	for($i=0;$i<$fileCount;$i++){
-		// $target=stripslashes($dir) . $files['name'][$i];
         $target = OC_Helper::buildNotExistingFileName(stripslashes($dir), $files['name'][$i]);
 		if(is_uploaded_file($files['tmp_name'][$i]) and OC_Filesystem::fromTmpFile($files['tmp_name'][$i],$target)){
 			$meta=OC_FileCache::getCached($target);
-			$result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'],'name'=>$files['name'][$i]);
+			$result[]=array( "status" => "success", 'mime'=>$meta['mimetype'],'size'=>$meta['size'],'name'=>basename($target));
 		}
 	}
 	OC_JSON::encodedPrint($result);
diff --git a/files/js/files.js b/files/js/files.js
index 2d943d85cd415d561b6194bdfe74f9c7e722f0a0..3ce95f992d0b3835cd52a7dd2bb713f7ecd7811c 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -211,12 +211,12 @@ $(document).ready(function() {
 						var size=t('files','Pending');
 					}
 					if(files){
-						FileList.addFile(files[i].name,size,date,true);
+						FileList.addFile(getUniqueName(files[i].name),size,date,true);
 					}
 				}
 			}else{
 				var filename=this.value.split('\\').pop(); //ie prepends C:\fakepath\ in front of the filename
-				FileList.addFile(filename,'Pending',date,true);
+				FileList.addFile(getUniqueName(filename),'Pending',date,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
@@ -570,3 +570,22 @@ function getMimeIcon(mime, ready){
 	}
 }
 getMimeIcon.cache={};
+
+function getUniqueName(name){
+	if($('tr').filterAttr('data-file',name).length>0){
+		var parts=name.split('.');
+		var extension=parts.pop();
+		var base=parts.join('.');
+		numMatch=base.match(/\((\d+)\)/);
+		var num=2;
+		if(numMatch && numMatch.length>0){
+			num=parseInt(numMatch[numMatch.length-1])+1;
+			base=base.split('(')
+			base.pop();
+			base=base.join('(').trim();
+		}
+		name=base+' ('+num+').'+extension;
+		return getUniqueName(name);
+	}
+	return name;
+}