diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2013-08-28 01:53:04 +0400 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2013-08-28 01:53:04 +0400 |
commit | 3eed060ec9f680aed4b254f018d832ade5f873c7 (patch) | |
tree | 0d26d4fa30454c94eedc5b4dac44ff137940fa5b | |
parent | 34a32d862c08a3c1221c43954df1288e398f91a2 (diff) |
backport of #4357 to master
-rw-r--r-- | apps/files/ajax/upload.php | 24 | ||||
-rw-r--r-- | apps/files/js/file-upload.js | 26 | ||||
-rw-r--r-- | apps/files_sharing/lib/sharedstorage.php | 10 |
3 files changed, 33 insertions, 27 deletions
diff --git a/apps/files/ajax/upload.php b/apps/files/ajax/upload.php index dde5d3c50af..1d03cd89f83 100644 --- a/apps/files/ajax/upload.php +++ b/apps/files/ajax/upload.php @@ -105,16 +105,20 @@ if (strpos($dir, '..') === false) { $meta = \OC\Files\Filesystem::getFileInfo($target); // updated max file size after upload $storageStats = \OCA\files\lib\Helper::buildFileStorageStatistics($dir); - - $result[] = array('status' => 'success', - 'mime' => $meta['mimetype'], - 'size' => $meta['size'], - 'id' => $meta['fileid'], - 'name' => basename($target), - 'originalname' => $files['name'][$i], - 'uploadMaxFilesize' => $maxUploadFileSize, - 'maxHumanFilesize' => $maxHumanFileSize - ); + if ($meta === false) { + OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Upload failed')), $storageStats))); + exit(); + } else { + $result[] = array('status' => 'success', + 'mime' => $meta['mimetype'], + 'size' => $meta['size'], + 'id' => $meta['fileid'], + 'name' => basename($target), + 'originalname' => $files['name'][$i], + 'uploadMaxFilesize' => $maxUploadFileSize, + 'maxHumanFilesize' => $maxHumanFileSize + ); + } } } OCP\JSON::encodedPrint($result); diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index f262f11f065..1e6ab74fb6d 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -102,6 +102,18 @@ $(document).ready(function() { var result=$.parseJSON(response); if(typeof result[0] !== 'undefined' && result[0].status === 'success') { + var filename = result[0].originalname; + + // delete jqXHR reference + if (typeof data.context !== 'undefined' && data.context.data('type') === 'dir') { + var dirName = data.context.data('file'); + delete uploadingFiles[dirName][filename]; + if ($.assocArraySize(uploadingFiles[dirName]) == 0) { + delete uploadingFiles[dirName]; + } + } else { + delete uploadingFiles[filename]; + } var file = result[0]; } else { data.textStatus = 'servererror'; @@ -109,20 +121,6 @@ $(document).ready(function() { var fu = $(this).data('blueimp-fileupload') || $(this).data('fileupload'); fu._trigger('fail', e, data); } - - var filename = result[0].originalname; - - // delete jqXHR reference - if (typeof data.context !== 'undefined' && data.context.data('type') === 'dir') { - var dirName = data.context.data('file'); - delete uploadingFiles[dirName][filename]; - if ($.assocArraySize(uploadingFiles[dirName]) == 0) { - delete uploadingFiles[dirName]; - } - } else { - delete uploadingFiles[filename]; - } - }, /** * called after last upload diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index 7384b094cb0..d91acbbb2bd 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -362,9 +362,13 @@ class Shared extends \OC\Files\Storage\Common { case 'xb': case 'a': case 'ab': - if (!$this->isUpdatable($path)) { - return false; - } + $exists = $this->file_exists($path); + if ($exists && !$this->isUpdatable($path)) { + return false; + } + if (!$exists && !$this->isCreatable(dirname($path))) { + return false; + } } $info = array( 'target' => $this->sharedFolder.$path, |