allow multiple-file cloud upload
This commit is contained in:
parent
e38880a686
commit
560af7a5b8
@ -69,6 +69,81 @@ class Browser extends DAV\Browser\Plugin {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extend from parent to add our own listeners
|
||||||
|
*/
|
||||||
|
function initialize(DAV\Server $server) {
|
||||||
|
parent::initialize($server);
|
||||||
|
if ($this->enablePost) {
|
||||||
|
$this->server->on('onBrowserPostAction', [$this, 'cloudPostAction']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles POST requests for tree operations.
|
||||||
|
*
|
||||||
|
* @param string $uri
|
||||||
|
* @param string $action
|
||||||
|
* @param array $postVars
|
||||||
|
* @return boolean false will stop other events in the beforeMethod chain to execute
|
||||||
|
*/
|
||||||
|
function cloudPostAction($uri, $action, $postVars) {
|
||||||
|
switch ($postVars['sabreAction']) {
|
||||||
|
case 'mkcol' :
|
||||||
|
if (isset($postVars['name']) && trim($postVars['name'])) {
|
||||||
|
// Using basename() because we won't allow slashes
|
||||||
|
list(, $folderName) = \Sabre\HTTP\URLUtil::splitPath(trim($postVars['name']));
|
||||||
|
|
||||||
|
if (isset($postVars['resourceType'])) {
|
||||||
|
$resourceType = explode(',', $postVars['resourceType']);
|
||||||
|
} else {
|
||||||
|
$resourceType = ['{DAV:}collection'];
|
||||||
|
}
|
||||||
|
|
||||||
|
$properties = [];
|
||||||
|
foreach ($postVars as $varName => $varValue) {
|
||||||
|
// Any _POST variable in clark notation is treated
|
||||||
|
// like a property.
|
||||||
|
if ($varName[0] === '{') {
|
||||||
|
// PHP will convert any dots to underscores.
|
||||||
|
// This leaves us with no way to differentiate
|
||||||
|
// the two.
|
||||||
|
// Therefore we replace the string *DOT* with a
|
||||||
|
// real dot. * is not allowed in uris so we
|
||||||
|
// should be good.
|
||||||
|
$varName = str_replace('*DOT*', '.', $varName);
|
||||||
|
$properties[$varName] = $varValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$mkCol = new DAV\MkCol(
|
||||||
|
$resourceType,
|
||||||
|
$properties
|
||||||
|
);
|
||||||
|
$this->server->createCollection($uri . '/' . $folderName, $mkCol);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'put' :
|
||||||
|
|
||||||
|
if ($_FILES)
|
||||||
|
$file = current($_FILES);
|
||||||
|
else
|
||||||
|
break;
|
||||||
|
|
||||||
|
for ($i = 0; $i < count($file['name']); $i++) {
|
||||||
|
list(, $newName) = \Sabre\HTTP\URLUtil::splitPath(trim($file['name'][$i]));
|
||||||
|
|
||||||
|
if (is_uploaded_file($file['tmp_name'][$i])) {
|
||||||
|
$this->server->createFile($uri . '/' . $newName, fopen($file['tmp_name'][$i], 'r'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Creates the directory listing for the given path.
|
* @brief Creates the directory listing for the given path.
|
||||||
*
|
*
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
<label for="files-upload">{{$upload_header}}</label>
|
<label for="files-upload">{{$upload_header}}</label>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
<input class="form-group pull-left" id="files-upload" type="file" name="file">
|
<input class="form-group pull-left" id="files-upload" type="file" name="file[]" multiple>
|
||||||
<button class="btn btn-primary btn-sm pull-right" type="submit" value="{{$upload_submit}}">{{$upload_submit}}</button>
|
<button class="btn btn-primary btn-sm pull-right" type="submit" value="{{$upload_submit}}">{{$upload_submit}}</button>
|
||||||
</form>
|
</form>
|
||||||
<div class="clear"></div>
|
<div class="clear"></div>
|
||||||
|
Reference in New Issue
Block a user