diff --git a/apps/workflowengine/lib/Check/FileSize.php b/apps/workflowengine/lib/Check/FileSize.php
index 9fcac0c98562b..aa2bb9279906d 100644
--- a/apps/workflowengine/lib/Check/FileSize.php
+++ b/apps/workflowengine/lib/Check/FileSize.php
@@ -14,9 +14,9 @@
class FileSize implements ICheck {
- /** @var int */
- protected $size;
-
+ /** @var int|float|null */
+ protected int|float|null $size;
+
/** @var IL10N */
protected $l;
@@ -72,25 +72,35 @@ public function validateCheck($operator, $value) {
}
/**
- * @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;
}
diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml
index 8ce1af0776e41..6991f790d7e28 100644
--- a/build/psalm-baseline.xml
+++ b/build/psalm-baseline.xml
@@ -1212,20 +1212,6 @@
-
-
- size]]>
-
-
-
-
-
- size]]>
-
-
-
-
-