86 lines
3.3 KiB
PHP
86 lines
3.3 KiB
PHP
<?php
|
|
|
|
namespace App\Controllers\Trait;
|
|
|
|
use CodeIgniter\HTTP\Files\UploadedFile;
|
|
|
|
trait FileTrait
|
|
{
|
|
//Upload FIle관련
|
|
private function upload_file_process(UploadedFile $upfile): string
|
|
{
|
|
$name = null;
|
|
$filename = null;
|
|
if ($upfile->isValid() && !$upfile->hasMoved()) {
|
|
$name = $upfile->getName();
|
|
$filename = $upfile->getRandomName();
|
|
$upfile->move(PATHS['UPLOAD'], $filename);
|
|
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
|
|
$filename = $upfile->getName();
|
|
}
|
|
return $name . DEFAULTS['DELIMITER_FILE'] . $filename;
|
|
}
|
|
public function upload_file_procedure(string $field): string
|
|
{
|
|
return $this->upload_file_process($this->request->getFile($field));
|
|
}
|
|
public function upload_multiple_file_procedure(string $field): array
|
|
{
|
|
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
|
|
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
|
|
$files = array();
|
|
if ($upfiles = $this->request->getFiles()) {
|
|
foreach ($upfiles[$field] as $upfile) {
|
|
if ($upfile->isValid() && !$upfile->hasMoved()) {
|
|
array_push($files, $this->upload_file_process($upfile));
|
|
}
|
|
}
|
|
}
|
|
return $files;
|
|
}
|
|
|
|
private function image_resize_process(UploadedFile $upfile, $filename, $x = 25, $y = 25)
|
|
{
|
|
$image = \Config\Services::image();
|
|
$image->withFile($upfile)
|
|
->resize($x, $y, true, 'height')
|
|
->save(PATHS['UPLOAD_PHOTO'] . $filename);
|
|
}
|
|
private function upload_image_process(UploadedFile $upfile): string
|
|
{
|
|
//참고:https://www.positronx.io/codeigniter-resize-image-with-image-manipulation-tutorial/
|
|
$name = null;
|
|
$filename = null;
|
|
if ($upfile->isValid() && !$upfile->hasMoved()) {
|
|
$name = $upfile->getName();
|
|
$filename = $upfile->getRandomName();
|
|
$this->image_resize_process($upfile, "small_" . $filename);
|
|
$this->image_resize_process($upfile, "middle_" . $filename, 50, 50);
|
|
$this->image_resize_process($upfile, "large_" . $filename, 100, 100);
|
|
$upfile->move(PATHS['UPLOAD_PHOTO'], $filename);
|
|
//move시 중복된파일명이 있다면 파일명이 바뀌므로 여기서 한번더 파일명 확인 필요
|
|
$filename = $upfile->getName();
|
|
}
|
|
return $name . DEFAULTS['DELIMITER_FILE'] . $filename;
|
|
}
|
|
|
|
public function upload_image_procedure(string $field): string
|
|
{
|
|
return $this->upload_image_process($this->request->getFile($field));
|
|
}
|
|
public function upload_multiple_image_procedure(string $field): array
|
|
{
|
|
//Multiple파일의경우 html에서는 필드명[]를 넣어야하며
|
|
//rule에서 "uploaded[필드명.0]|is_image[필드명]~~" 이런식으로 넣어야함
|
|
$names = array();
|
|
if ($upfiles = $this->request->getFiles()) {
|
|
foreach ($upfiles[$field] as $upfile) {
|
|
if ($upfile->isValid() && !$upfile->hasMoved()) {
|
|
array_push($files, $this->upload_image_process($upfile));
|
|
}
|
|
}
|
|
}
|
|
return $names;
|
|
}
|
|
}
|