Fix media upload path

This commit is contained in:
Dennis Eichhorn 2017-05-31 21:03:41 +02:00
parent 18f1428fb3
commit 8ece43d521
2 changed files with 12 additions and 7 deletions

View File

@ -178,7 +178,7 @@ class Controller extends ModuleAbstract implements WebInterface
*/ */
public function apiMediaUpload(RequestAbstract $request, ResponseAbstract $response, $data = null) public function apiMediaUpload(RequestAbstract $request, ResponseAbstract $response, $data = null)
{ {
$uploads = $this->uploadFiles($request->getFiles(), $request->getAccount(), $request->getData('path') ?? '/Modules/Media/Files'); $uploads = $this->uploadFiles($request->getFiles(), $request->getAccount(), $request->getData('path') ?? __DIR__ . '/../../Modules/Media/Files');
$ids = []; $ids = [];
foreach($uploads as $file) { foreach($uploads as $file) {
@ -216,14 +216,13 @@ class Controller extends ModuleAbstract implements WebInterface
* @since 1.0.0 * @since 1.0.0
* @author Dennis Eichhorn <d.eichhorn@oms.com> * @author Dennis Eichhorn <d.eichhorn@oms.com>
*/ */
public function uploadFiles(array $files, int $account, string $basePath = 'Modules/Media/Files') : array public function uploadFiles(array $files, int $account, string $basePath = '/Modules/Media/Files') : array
{ {
$mediaCreated = []; $mediaCreated = [];
if (!empty($files)) { if (!empty($files)) {
$upload = new UploadFile(); $upload = new UploadFile();
$path = self::createMediaPath($basePath); $upload->setOutputDir(self::createMediaPath($basePath));
$upload->setOutputDir($path);
$status = $upload->upload($files); $status = $upload->upload($files);
$mediaCreated = self::createDbEntries($status, $account); $mediaCreated = self::createDbEntries($status, $account);
@ -232,7 +231,7 @@ class Controller extends ModuleAbstract implements WebInterface
return $mediaCreated; return $mediaCreated;
} }
public static function createMediaPath(string $basePath = 'Modules/Media/Files') : string public static function createMediaPath(string $basePath = '/Modules/Media/Files') : string
{ {
$rndPath = str_pad(dechex(rand(0, 65535)), 4, '0', STR_PAD_LEFT); $rndPath = str_pad(dechex(rand(0, 65535)), 4, '0', STR_PAD_LEFT);
return $basePath . '/' . $rndPath[0] . $rndPath[1] . '/' . $rndPath[2] . $rndPath[3]; return $basePath . '/' . $rndPath[0] . $rndPath[1] . '/' . $rndPath[2] . $rndPath[3];
@ -266,7 +265,8 @@ class Controller extends ModuleAbstract implements WebInterface
if ($status['status'] === UploadStatus::OK) { if ($status['status'] === UploadStatus::OK) {
$media = new Media(); $media = new Media();
$media->setPath(trim($status['path'], '/') . '/' . $status['filename']);
$media->setPath(self::normalizeDbPath($status['path']) . '/' . $status['filename']);
$media->setName($status['name']); $media->setName($status['name']);
$media->setSize($status['size']); $media->setSize($status['size']);
$media->setCreatedBy($account); $media->setCreatedBy($account);
@ -279,4 +279,9 @@ class Controller extends ModuleAbstract implements WebInterface
return $media; return $media;
} }
private static function normalizeDbPath(string $path) : string
{
return str_replace('\\', '/', str_replace(realpath(__DIR__ . '/../../'), '', rtrim($path, '/')));
}
} }

View File

@ -193,7 +193,7 @@ class UploadFile
$this->interlace($extension, $dest); $this->interlace($extension, $dest);
} }
$result[$key]['path'] = $this->outputDir; $result[$key]['path'] = realpath($this->outputDir);
} }
return $result; return $result;