Fixed uploading by drag and drop into folder
This commit is contained in:
parent
a921ad8925
commit
9ef7410abe
4 changed files with 26 additions and 29 deletions
|
@ -26,7 +26,7 @@ if (empty($_POST['dirToken'])) {
|
|||
|
||||
// return only read permissions for public upload
|
||||
$allowedPermissions = OCP\PERMISSION_READ;
|
||||
$public_directory = !empty($_POST['subdir']) ? $_POST['subdir'] : '/';
|
||||
$publicDirectory = !empty($_POST['subdir']) ? $_POST['subdir'] : '/';
|
||||
|
||||
$linkItem = OCP\Share::getShareByToken($_POST['dirToken']);
|
||||
if ($linkItem === false) {
|
||||
|
@ -50,13 +50,15 @@ if (empty($_POST['dirToken'])) {
|
|||
$dir = sprintf(
|
||||
"/%s/%s",
|
||||
$path,
|
||||
$public_directory
|
||||
$publicDirectory
|
||||
);
|
||||
|
||||
if (!$dir || empty($dir) || $dir === false) {
|
||||
OCP\JSON::error(array('data' => array_merge(array('message' => $l->t('Unable to set upload directory.')))));
|
||||
die();
|
||||
}
|
||||
|
||||
$dir = rtrim($dir, '/');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,33 +115,33 @@ if ($maxUploadFileSize >= 0 and $totalSize > $maxUploadFileSize) {
|
|||
}
|
||||
|
||||
$result = array();
|
||||
$directory = '';
|
||||
if (strpos($dir, '..') === false) {
|
||||
$fileCount = count($files['name']);
|
||||
for ($i = 0; $i < $fileCount; $i++) {
|
||||
|
||||
// Get the files directory
|
||||
if(isset($_POST['file_directory']) === true) {
|
||||
$directory = '/'.$_POST['file_directory'];
|
||||
// target directory for when uploading folders
|
||||
$relativePath = '';
|
||||
if(!empty($_POST['file_directory'])) {
|
||||
$relativePath = '/'.$_POST['file_directory'];
|
||||
}
|
||||
|
||||
// $path needs to be normalized - this failed within drag'n'drop upload to a sub-folder
|
||||
if (isset($_POST['resolution']) && $_POST['resolution']==='autorename') {
|
||||
// append a number in brackets like 'filename (2).ext'
|
||||
$target = OCP\Files::buildNotExistingFileName(stripslashes($dir.$directory), $files['name'][$i]);
|
||||
$target = OCP\Files::buildNotExistingFileName(stripslashes($dir . $relativePath), $files['name'][$i]);
|
||||
} else {
|
||||
$target = \OC\Files\Filesystem::normalizePath(stripslashes($dir.$directory).'/'.$files['name'][$i]);
|
||||
$target = \OC\Files\Filesystem::normalizePath(stripslashes($dir . $relativePath).'/'.$files['name'][$i]);
|
||||
}
|
||||
|
||||
if(empty($directory) === true)
|
||||
{
|
||||
$directory = \OC\Files\Filesystem::normalizePath(stripslashes($dir));
|
||||
if (isset($public_directory)) {
|
||||
// If we are uploading from the public app,
|
||||
// we want to send the relative path in the ajax request.
|
||||
$directory = $public_directory;
|
||||
}
|
||||
|
||||
// relative dir to return to the client
|
||||
if (isset($publicDirectory)) {
|
||||
// path relative to the public root
|
||||
$returnedDir = $publicDirectory . $relativePath;
|
||||
} else {
|
||||
// full path
|
||||
$returnedDir = $dir . $relativePath;
|
||||
}
|
||||
$returnedDir = \OC\Files\Filesystem::normalizePath($returnedDir);
|
||||
|
||||
if ( ! \OC\Files\Filesystem::file_exists($target)
|
||||
|| (isset($_POST['resolution']) && $_POST['resolution']==='replace')
|
||||
|
@ -163,7 +165,7 @@ if (strpos($dir, '..') === false) {
|
|||
$data['uploadMaxFilesize'] = $maxUploadFileSize;
|
||||
$data['maxHumanFilesize'] = $maxHumanFileSize;
|
||||
$data['permissions'] = $meta['permissions'] & $allowedPermissions;
|
||||
$data['directory'] = $directory;
|
||||
$data['directory'] = $returnedDir;
|
||||
$result[] = $data;
|
||||
}
|
||||
|
||||
|
@ -187,7 +189,7 @@ if (strpos($dir, '..') === false) {
|
|||
$data['uploadMaxFilesize'] = $maxUploadFileSize;
|
||||
$data['maxHumanFilesize'] = $maxHumanFileSize;
|
||||
$data['permissions'] = $meta['permissions'] & $allowedPermissions;
|
||||
$data['directory'] = $directory;
|
||||
$data['directory'] = $returnedDir;
|
||||
$result[] = $data;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -346,7 +346,7 @@ OC.Upload = {
|
|||
// noone set update parameters, we set the minimum
|
||||
data.formData = {
|
||||
requesttoken: oc_requesttoken,
|
||||
dir: FileList.getCurrentDirectory(),
|
||||
dir: data.targetDir || FileList.getCurrentDirectory(),
|
||||
file_directory: fileDirectory
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1561,17 +1561,12 @@
|
|||
dir = dropTarget.data('dir') || '/';
|
||||
}
|
||||
|
||||
// update folder in form
|
||||
data.formData = function() {
|
||||
return [
|
||||
{name: 'dir', value: dir},
|
||||
{name: 'requesttoken', value: oc_requesttoken},
|
||||
{name: 'file_directory', value: data.files[0].relativePath}
|
||||
];
|
||||
};
|
||||
// add target dir
|
||||
data.targetDir = dir;
|
||||
} else {
|
||||
// we are dropping somewhere inside the file list, which will
|
||||
// upload the file to the current directory
|
||||
data.targetDir = self.getCurrentDirectory();
|
||||
|
||||
// cancel uploads to current dir if no permission
|
||||
var isCreatable = (self.getDirectoryPermissions() & OC.PERMISSION_CREATE) !== 0;
|
||||
|
|
|
@ -128,7 +128,7 @@ OCA.Sharing.PublicApp = {
|
|||
data.formData = {
|
||||
requesttoken: $('#publicUploadRequestToken').val(),
|
||||
dirToken: $('#dirToken').val(),
|
||||
subdir: self.fileList.getCurrentDirectory(),
|
||||
subdir: data.targetDir || self.fileList.getCurrentDirectory(),
|
||||
file_directory: fileDirectory
|
||||
};
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue