diff --git a/nexus/Attachment/Storage.php b/nexus/Attachment/Storage.php index ab8d4889..e6fa68a7 100644 --- a/nexus/Attachment/Storage.php +++ b/nexus/Attachment/Storage.php @@ -23,9 +23,23 @@ abstract class Storage { abstract function getBaseUrl(): string; abstract function getDriverName(): string; - public function uploadGetLocation(string $filepath): string + public function uploadGetLocation(string $filepath, string $originalName): string { - $url = $this->upload($filepath); + $extension = pathinfo($filepath, PATHINFO_EXTENSION); + if (empty($extension)) { + $newFilepath = sprintf("%s/%s", dirname($filepath), trim($originalName)); + $moveResult = move_uploaded_file($filepath, $newFilepath); + do_log(sprintf("filepath: %s, newFilepath: %s, moveResult: %s", $filepath, $newFilepath, $moveResult)); + if (!$moveResult) { + throw new \Exception("Failed to move uploaded file."); + } + $url = $this->upload($newFilepath); + @unlink($filepath); + @unlink($newFilepath); + } else { + $url = $this->upload($filepath); + @unlink($filepath); + } return $this->trimBaseUrl($url); } diff --git a/public/attachment.php b/public/attachment.php index dd067287..00ff11d4 100644 --- a/public/attachment.php +++ b/public/attachment.php @@ -238,7 +238,7 @@ if ($Attach->enable_attachment()) } else { try { $driver = \Nexus\Attachment\Storage::getDriver(); - $location = $driver->uploadGetLocation($file["tmp_name"]); + $location = $driver->uploadGetLocation($file["tmp_name"], $file['name']); $db_file_location = substr($location, 0, -1*strlen($ext)-1); $url = $driver->getImageUrl($location); } catch (\Exception $exception) {