diff --git a/lib/helper.php b/lib/helper.php
index 1860a55fc8fd7a3515341d5ad8ebbc534ed8bacf..017221cef77330d339adf5e53775e57c61b3ece8 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -636,6 +636,18 @@ class OC_Helper {
 	* @return string
 	*/
 	public static function buildNotExistingFileName($path, $filename) {
+		$view = \OC\Files\Filesystem::getView();
+		return self::buildNotExistingFileNameForView($path, $filename, $view);
+	}
+
+	/**
+	* Adds a suffix to the name in case the file exists
+	*
+	* @param $path
+	* @param $filename
+	* @return string
+	*/
+	public static function buildNotExistingFileNameForView($path, $filename, \OC\Files\View $view) {
 		if($path==='/') {
 			$path='';
 		}
@@ -649,7 +661,7 @@ class OC_Helper {
 
 		$newpath = $path . '/' . $filename;
 		$counter = 2;
-		while (\OC\Files\Filesystem::file_exists($newpath)) {
+		while ($view->file_exists($newpath)) {
 			$newname = $name . ' (' . $counter . ')' . $ext;
 			$newpath = $path . '/' . $newname;
 			$counter++;
diff --git a/tests/lib/helper.php b/tests/lib/helper.php
index 6acb0dfaa6b1cf1a2eb8b2e7f5e1079e7a089d58..410117a9e67632eefbd502adc5ca6b7e22b02e67 100644
--- a/tests/lib/helper.php
+++ b/tests/lib/helper.php
@@ -146,4 +146,46 @@ class Test_Helper extends PHPUnit_Framework_TestCase {
 		$result = OC_Helper::recursiveArraySearch($haystack, "NotFound");
 		$this->assertFalse($result);
 	}
+
+	function testBuildNotExistingFileNameForView() {
+		$viewMock = $this->getMock('\OC\Files\View', array(), array(), '', false);
+		$this->assertEquals('/filename', OC_Helper::buildNotExistingFileNameForView('/', 'filename', $viewMock));
+		$this->assertEquals('dir/filename.ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock));
+
+		$viewMock->expects($this->at(0))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$this->assertEquals('dir/filename (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock));
+
+		$viewMock->expects($this->at(0))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$viewMock->expects($this->at(1))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$this->assertEquals('dir/filename (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename.ext', $viewMock));
+
+		$viewMock->expects($this->at(0))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$this->assertEquals('dir/filename (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (1).ext', $viewMock));
+
+		$viewMock->expects($this->at(0))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$viewMock->expects($this->at(1))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$this->assertEquals('dir/filename (3).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename (2).ext', $viewMock));
+
+		$viewMock->expects($this->at(0))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$this->assertEquals('dir/filename(2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1).ext', $viewMock));
+
+		$viewMock->expects($this->at(0))
+			->method('file_exists')
+			->will($this->returnValue(true));
+		$this->assertEquals('dir/filename(1) (2).ext', OC_Helper::buildNotExistingFileNameForView('dir', 'filename(1) (1).ext', $viewMock));
+	}
 }