diff --git a/lib/private/connector/sabre/file.php b/lib/private/connector/sabre/file.php
index 3c19da7c6181a55fce16b61e22775cfe223939f1..84154ee855a17dc05416638284b3c6fb6681fb36 100644
--- a/lib/private/connector/sabre/file.php
+++ b/lib/private/connector/sabre/file.php
@@ -87,14 +87,21 @@ class OC_Connector_Sabre_File extends OC_Connector_Sabre_Node implements Sabre_D
 				throw new Sabre_DAV_Exception();
 			}
 		} catch (\OCP\Files\NotPermittedException $e) {
-			throw new Sabre_DAV_Exception_Forbidden();
+			// a more general case - due to whatever reason the content could not be written
+			throw new Sabre_DAV_Exception_Forbidden($e->getMessage());
+
 		} catch (\OCP\Files\EntityTooLargeException $e) {
-			throw new OC_Connector_Sabre_Exception_EntityTooLarge();
+			// the file is too big to be stored
+			throw new OC_Connector_Sabre_Exception_EntityTooLarge($e->getMessage());
+
 		} catch (\OCP\Files\InvalidContentException $e) {
-			throw new OC_Connector_Sabre_Exception_UnsupportedMediaType();
+			// the file content is not permitted
+			throw new OC_Connector_Sabre_Exception_UnsupportedMediaType($e->getMessage());
+
 		} catch (\OCP\Files\InvalidPathException $e) {
-			// TODO: add specific exception here
-			throw new Sabre_DAV_Exception_Forbidden();
+			// the path for the file was not valid
+			// TODO: find proper http status code for this case
+			throw new Sabre_DAV_Exception_Forbidden($e->getMessage());
 		}
 
 		// rename to correct path