mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
fix(workflowenigne): stricter length headler handling
Fixes #55276 and tidies things up a bit more for future maintenance. Signed-off-by: Josh <josh.t.richards@gmail.com>
This commit is contained in:
parent
f2051caaee
commit
1e81f7293e
1 changed files with 15 additions and 5 deletions
|
|
@ -67,25 +67,35 @@ class FileSize implements ICheck {
|
|||
}
|
||||
|
||||
/**
|
||||
* @return string
|
||||
* Gets the file size from HTTP headers.
|
||||
*
|
||||
* Checks 'OC-Total-Length' first; if unavailable and the method is POST or PUT,
|
||||
* checks 'Content-Length'. Returns the size as int, float, or false if not found or invalid.
|
||||
*
|
||||
* @return int|float|false File size in bytes, or false if unavailable.
|
||||
*/
|
||||
protected function getFileSizeFromHeader() {
|
||||
if ($this->size !== null) {
|
||||
// Already have it cached?
|
||||
return $this->size;
|
||||
}
|
||||
|
||||
$size = $this->request->getHeader('OC-Total-Length');
|
||||
if ($size === '') {
|
||||
if (in_array($this->request->getMethod(), ['POST', 'PUT'])) {
|
||||
// Try fallback for upload methods
|
||||
$method = $this->request->getMethod();
|
||||
if (in_array($method, ['POST', 'PUT'], true)) {
|
||||
$size = $this->request->getHeader('Content-Length');
|
||||
}
|
||||
}
|
||||
|
||||
if ($size === '') {
|
||||
$size = false;
|
||||
if ($size !== '' && is_numeric($size)) {
|
||||
$this->size = Util::numericToNumber($size);
|
||||
} else {
|
||||
// No valid size header found
|
||||
$this->size = false;
|
||||
}
|
||||
|
||||
$this->size = $size;
|
||||
return $this->size;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue