Fix mimetype detection on public uploads for the workflow engine
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
d2687a0f1b
commit
2203bdb4ff
|
@ -76,13 +76,22 @@ class FileMimeType extends AbstractStringCheck {
|
||||||
return $this->mimeType[$this->storage->getId()][$this->path];
|
return $this->mimeType[$this->storage->getId()][$this->path];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->mimeType[$this->storage->getId()][$this->path] = '';
|
|
||||||
if ($this->isWebDAVRequest()) {
|
if ($this->isWebDAVRequest()) {
|
||||||
if ($this->request->getMethod() === 'PUT') {
|
if ($this->request->getMethod() === 'PUT') {
|
||||||
$path = $this->request->getPathInfo();
|
$path = $this->request->getPathInfo();
|
||||||
$this->mimeType[$this->storage->getId()][$this->path] = $this->mimeTypeDetector->detectPath($path);
|
$this->mimeType[$this->storage->getId()][$this->path] = $this->mimeTypeDetector->detectPath($path);
|
||||||
return $this->mimeType[$this->storage->getId()][$this->path];
|
return $this->mimeType[$this->storage->getId()][$this->path];
|
||||||
}
|
}
|
||||||
|
} else if ($this->isPublicWebDAVRequest()) {
|
||||||
|
if ($this->request->getMethod() === 'PUT') {
|
||||||
|
$path = $this->request->getPathInfo();
|
||||||
|
if (strpos($path, '/webdav/') === 0) {
|
||||||
|
$path = substr($path, strlen('/webdav'));
|
||||||
|
}
|
||||||
|
$path = $this->path . $path;
|
||||||
|
$this->mimeType[$this->storage->getId()][$path] = $this->mimeTypeDetector->detectPath($path);
|
||||||
|
return $this->mimeType[$this->storage->getId()][$path];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array($this->request->getMethod(), ['POST', 'PUT'])) {
|
if (in_array($this->request->getMethod(), ['POST', 'PUT'])) {
|
||||||
|
@ -159,4 +168,14 @@ class FileMimeType extends AbstractStringCheck {
|
||||||
strpos($this->request->getPathInfo(), '/dav/files/') === 0
|
strpos($this->request->getPathInfo(), '/dav/files/') === 0
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
protected function isPublicWebDAVRequest() {
|
||||||
|
return substr($this->request->getScriptName(), 0 - strlen('/public.php')) === '/public.php' && (
|
||||||
|
$this->request->getPathInfo() === '/webdav' ||
|
||||||
|
strpos($this->request->getPathInfo(), '/webdav/') === 0
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue