diff --git a/apps/files_sharing/sharedstorage.php b/apps/files_sharing/sharedstorage.php
index e2147bea4924958973147f0f7a37dd793d41027b..afe173ad0cc64e86c1879b08671d007ffb3272ca 100644
--- a/apps/files_sharing/sharedstorage.php
+++ b/apps/files_sharing/sharedstorage.php
@@ -494,11 +494,15 @@ class OC_Filestorage_Shared extends OC_Filestorage {
 		}
 	}
 	
-	public function fromUploadedFile($tmpPath, $path) {
-		$source = $this->getSource($tmpPath);
-		if ($source) {
-			$storage = OC_Filesystem::getStorage($source);
-			return $storage->fromUploadedFile($this->getInternalPath($source), $path);
+	public function fromUploadedFile($tmpFile, $path) {
+		if ($this->is_writeable($path)) {
+			$source = $this->getSource($path);
+			if ($source) {
+				$storage = OC_Filesystem::getStorage($source);
+				return $storage->fromUploadedFile($tmpFile, $this->getInternalPath($source));
+			}
+		} else {
+			return false;
 		}
 	}
 	
diff --git a/files/ajax/upload.php b/files/ajax/upload.php
index 4247aeca2834e3368f0c14c31d87bccb805d827f..2c0afa33a7d05ccefda545a883576d3374ac6207 100644
--- a/files/ajax/upload.php
+++ b/files/ajax/upload.php
@@ -33,7 +33,7 @@ $result=array();
 if(strpos($dir,'..') === false){
 	$fileCount=count($files['name']);
 	for($i=0;$i<$fileCount;$i++){
-		$target='/' . stripslashes($dir) . $files['name'][$i];
+		$target=stripslashes($dir) . $files['name'][$i];
 		if(OC_Filesystem::fromUploadedFile($files['tmp_name'][$i],$target)){
 			$result[]=array( "status" => "success", 'mime'=>OC_Filesystem::getMimeType($target),'size'=>OC_Filesystem::filesize($target),'name'=>$files['name'][$i]);
 		}