diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php
index 8f0642d794a7a92bf88d3b784fe19b6656a6875e..bb68f44672578e949e3661b67ca7f34336edab26 100644
--- a/lib/private/connector/sabre/file.php
+++ b/lib/private/connector/sabre/file.php
@@ -247,8 +247,7 @@ class File extends \OC\Connector\Sabre\Node implements \Sabre\DAV\IFile {
 	 * @throws \Sabre\DAV\Exception\NotImplemented
 	 * @throws \Sabre\DAV\Exception\ServiceUnavailable
 	 */
-	private function createFileChunked($data)
-	{
+	private function createFileChunked($data) {
 		list($path, $name) = \Sabre\HTTP\URLUtil::splitPath($this->path);
 
 		$info = \OC_FileChunking::decodeName($name);
@@ -305,6 +304,8 @@ class File extends \OC\Connector\Sabre\Node implements \Sabre\DAV\IFile {
 					}
 				}
 
+				// mark chunking complete
+				$_SERVER['X-CHUNKING_COMPLETE'] = true;
 				$info = $this->fileView->getFileInfo($targetPath);
 				return $info->getEtag();
 			} catch (\OCP\Files\StorageNotAvailableException $e) {
diff --git a/lib/private/connector/sabre/filesplugin.php b/lib/private/connector/sabre/filesplugin.php
index 9720519f4c7ae4de2af4cc9a8d7f01533fc161b7..1b4b0674a578010a20e9f07b37f3a44a1a72ff79 100644
--- a/lib/private/connector/sabre/filesplugin.php
+++ b/lib/private/connector/sabre/filesplugin.php
@@ -174,7 +174,21 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
 			if (!is_null($fileId)) {
 				$this->server->httpResponse->setHeader('OC-FileId', $fileId);
 			}
+			$eTag = $this->getETag($node);
+			if (!is_null($eTag)) {
+				$this->server->httpResponse->setHeader('OC-ETag', $eTag);
+			}
+		}
+	}
+
+	/**
+	 * @param \OC\Connector\Sabre\Node $node
+	 */
+	public function getETag($node) {
+		if (isset($_SERVER['HTTP_OC_CHUNKED']) && !isset($_SERVER['X-CHUNKING_COMPLETE'])) {
+			return null;
 		}
+		return $node->getETag();
 	}
 
 }
diff --git a/tests/lib/connector/sabre/filesplugin.php b/tests/lib/connector/sabre/filesplugin.php
index 54d43d66dda4a6055c961c1ee3bbe3571f01f1a6..e10d67a3255016de5fa25c27b1046b3b7bb64939 100644
--- a/tests/lib/connector/sabre/filesplugin.php
+++ b/tests/lib/connector/sabre/filesplugin.php
@@ -171,4 +171,35 @@ class FilesPlugin extends \Test\TestCase {
 		$this->assertEquals(200, $result[self::GETETAG_PROPERTYNAME]);
 	}
 
+	/**
+	 * @dataProvider providesETagTestData
+	 * @param $expectedETag
+	 * @param $isChunked
+	 * @param $isChunkComplete
+	 */
+	public function testETag($expectedETag, $isChunked, $isChunkComplete) {
+		if (!is_null($isChunked)) {
+			$_SERVER['HTTP_OC_CHUNKED'] = $isChunked;
+		}
+		if (!is_null($isChunkComplete)) {
+			$_SERVER['X-CHUNKING_COMPLETE'] = $isChunkComplete;
+		}
+		$node = $this->createTestNode('\OC\Connector\Sabre\File');
+
+		$etag = $this->plugin->getETag($node);
+
+		$this->assertEquals($expectedETag, $etag);
+	}
+
+	public function providesETagTestData() {
+		return [
+			// non-chunked tests
+			['"abc"', null, null],
+			['"abc"', null, false],
+
+			// chunked tests
+			[null, true, null],
+			['"abc"', true, true],
+		];
+	}
 }