diff --git a/lib/private/DirectEditing/Manager.php b/lib/private/DirectEditing/Manager.php
index 0e7e988eef2957aa638e98bcc338f601f4ee868a..1ea09e74d5943ebb79f4b383ccbacc358d7f970d 100644
--- a/lib/private/DirectEditing/Manager.php
+++ b/lib/private/DirectEditing/Manager.php
@@ -27,6 +27,7 @@
 namespace OC\DirectEditing;
 
 use Doctrine\DBAL\FetchMode;
+use OC\Files\Node\Folder;
 use OCP\AppFramework\Http\NotFoundResponse;
 use OCP\AppFramework\Http\Response;
 use OCP\AppFramework\Http\TemplateResponse;
@@ -130,7 +131,12 @@ class Manager implements IManager {
 		if ($userFolder->nodeExists($path)) {
 			throw new \RuntimeException('File already exists');
 		} else {
-			$file = $userFolder->newFile($path);
+			if (!$userFolder->nodeExists(dirname($path))) {
+				throw new \RuntimeException('Invalid path');
+			}
+			/** @var Folder $folder */
+			$folder = $userFolder->get(dirname($path));
+			$file = $folder->newFile(basename($path));
 			$editor = $this->getEditor($editorId);
 			$creators = $editor->getCreators();
 			foreach ($creators as $creator) {
diff --git a/lib/private/Files/Template/TemplateManager.php b/lib/private/Files/Template/TemplateManager.php
index 44e1b10fa357bd8497f84e3af0c11f72c15c93cd..3dd7f82bff3499acedc9cf42d90fd7d84f1e513a 100644
--- a/lib/private/Files/Template/TemplateManager.php
+++ b/lib/private/Files/Template/TemplateManager.php
@@ -36,7 +36,6 @@ use OCP\Files\GenericFileException;
 use OCP\Files\IRootFolder;
 use OCP\Files\Node;
 use OCP\Files\NotFoundException;
-use OCP\Files\NotPermittedException;
 use OCP\Files\Template\FileCreatedFromTemplateEvent;
 use OCP\Files\Template\ICustomTemplateProvider;
 use OCP\Files\Template\ITemplateManager;
@@ -154,7 +153,11 @@ class TemplateManager implements ITemplateManager {
 		} catch (NotFoundException $e) {
 		}
 		try {
-			$targetFile = $userFolder->newFile($filePath);
+			if (!$userFolder->nodeExists(dirname($filePath))) {
+				throw new GenericFileException($this->l10n->t('Invalid path'));
+			}
+			$folder = $userFolder->get(dirname($filePath));
+			$targetFile = $folder->newFile(basename($filePath));
 			if ($templateType === 'user' && $templateId !== '') {
 				$template = $userFolder->get($templateId);
 				$template->copy($targetFile->getPath());
@@ -295,9 +298,10 @@ class TemplateManager implements ITemplateManager {
 			}
 
 			try {
-				$folder = $userFolder->newFolder($userTemplatePath);
-			} catch (NotPermittedException $e) {
 				$folder = $userFolder->get($userTemplatePath);
+			} catch (NotFoundException $e) {
+				$folder = $userFolder->get(dirname($userTemplatePath));
+				$folder = $folder->newFolder(basename($userTemplatePath));
 			}
 
 			$folderIsEmpty = count($folder->getDirectoryListing()) === 0;
diff --git a/tests/lib/DirectEditing/ManagerTest.php b/tests/lib/DirectEditing/ManagerTest.php
index 73bb4a836d80e62475ecac040d2f802b2e4f31cf..b00de02bcf520fa4b256c0ff38e60b25ef7d8cb3 100644
--- a/tests/lib/DirectEditing/ManagerTest.php
+++ b/tests/lib/DirectEditing/ManagerTest.php
@@ -154,11 +154,16 @@ class ManagerTest extends TestCase {
 		$this->random->expects($this->once())
 			->method('generate')
 			->willReturn($expectedToken);
+		$folder = $this->createMock(Folder::class);
 		$this->userFolder
 			->method('nodeExists')
-			->with('/File.txt')
-			->willReturn(false);
-		$this->userFolder->expects($this->once())
+			->withConsecutive(['/File.txt'], ['/'])
+			->willReturnOnConsecutiveCalls(false, true);
+		$this->userFolder
+			->method('get')
+			->with('/')
+			->willReturn($folder);
+		$folder->expects($this->once())
 			->method('newFile')
 			->willReturn($file);
 		$token = $this->manager->create('/File.txt', 'testeditor', 'createEmpty');
@@ -174,11 +179,16 @@ class ManagerTest extends TestCase {
 		$this->random->expects($this->once())
 			->method('generate')
 			->willReturn($expectedToken);
+		$folder = $this->createMock(Folder::class);
 		$this->userFolder
 			->method('nodeExists')
-			->with('/File.txt')
-			->willReturn(false);
-		$this->userFolder->expects($this->once())
+			->withConsecutive(['/File.txt'], ['/'])
+			->willReturnOnConsecutiveCalls(false, true);
+		$this->userFolder
+			->method('get')
+			->with('/')
+			->willReturn($folder);
+		$folder->expects($this->once())
 			->method('newFile')
 			->willReturn($file);
 		$this->manager->create('/File.txt', 'testeditor', 'createEmpty');