73 lines
2.4 KiB
PHP
73 lines
2.4 KiB
PHP
<?php
|
|
|
|
namespace App\Libraries\MyStorage;
|
|
|
|
use App\Libraries\MyStorageLibrary;
|
|
use App\Traits\FileTrait;
|
|
|
|
class FileLibrary extends MyStorageLibrary
|
|
{
|
|
use FileTrait;
|
|
private $_uploadPath = "uploads";
|
|
private $_path = "";
|
|
private $_mimeType = "";
|
|
private $_fileSize = 0;
|
|
private $_fileSequence = 0;
|
|
private $_imageLibrary = null;
|
|
public function __construct(string $path)
|
|
{
|
|
parent::__construct();
|
|
$this->_path = $path;
|
|
}
|
|
final public function getUploadPath(): string
|
|
{
|
|
return $this->_uploadPath;
|
|
}
|
|
final public function getPath(): string
|
|
{
|
|
return $this->_path;
|
|
}
|
|
final public function getMimeType(): string
|
|
{
|
|
return $this->_mimeType;
|
|
}
|
|
final public function getFileSize(): int
|
|
{
|
|
return $this->_fileSize;
|
|
}
|
|
final public function getFileSequence(): int
|
|
{
|
|
return $this->_fileSequence;
|
|
}
|
|
|
|
public function save(): static
|
|
{
|
|
$fullPath = WRITEPATH . $this->getUploadPath() . DIRECTORY_SEPARATOR . $this->getPath();
|
|
$this->makeDirectory($fullPath);
|
|
$saveFilePath = $fullPath . DIRECTORY_SEPARATOR . $this->getOriginName();
|
|
//중복된 파일명인지 확인후 새로운 이름으로 저장
|
|
if (file_exists($saveFilePath)) {
|
|
switch (getenv("mangboard.uloads.file.collision")) {
|
|
case "unique":
|
|
$saveFile = $this->getUniqueFilename($fullPath, $this->getOriginName());
|
|
$saveFilePath = $fullPath . DIRECTORY_SEPARATOR . $saveFile;
|
|
log_message("notice", __FUNCTION__ . "파일명 변경 : 원본파일 {$this->getOriginName()}->저장파일 {$saveFile}");
|
|
$this->setOriginName($saveFile);
|
|
break;
|
|
case "notallow":
|
|
default:
|
|
throw new \Exception(__FUNCTION__ . "{$saveFilePath}는 이미 존재하는 파일입니다.");
|
|
// break;
|
|
}
|
|
}
|
|
//원본이미지 저장
|
|
if (!file_put_contents($saveFilePath, $this->getOriginContent())) {
|
|
throw new \Exception(__FUNCTION__ . " 파일저장 실패:{$saveFilePath}");
|
|
}
|
|
$this->_mimeType = mime_content_type($saveFilePath);
|
|
$this->_fileSize = filesize($saveFilePath);
|
|
log_message("notice", __FUNCTION__ . " 원본파일 {$this->getOriginName()} 작업 완료");
|
|
return $this;
|
|
}
|
|
}
|