my-portfolio/dist/api/utils/imgUtils.php

70 lines
2.0 KiB
PHP

<?php
namespace api\utils;
use Psr\Http\Message\UploadedFileInterface;
use RecursiveDirectoryIterator;
use RecursiveIteratorIterator;
class imgUtils
{
/**
* Checks and uploads a file to the given directory
* @param string $targetDir - Directory to upload the file to
* @param UploadedFileInterface $img - File to upload
* @return string|array - String with error message or array with the location of the uploaded file
*/
public function uploadFile(string $targetDir, UploadedFileInterface $img): string|array
{
$targetFile = $targetDir . basename($img->getClientFilename());
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($targetFile, PATHINFO_EXTENSION));
// Check if file already exists
if (file_exists($targetFile))
{
return "The file already exists";
}
// Check file size
if ($img->getSize() > 2000000)
{
return "The file is too large, max 2MB";
}
// Allow certain file formats
if ($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif")
{
return "Only JPG, JPEG, PNG & GIF files are allowed";
}
$img->moveTo($targetFile);
return array("imgLocation" => $targetFile);
}
/**
* Deletes a directory and all its contents
* @param string $path - Path to the directory to delete
*/
public function deleteDirectory(string $path): void
{
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path,
RecursiveDirectoryIterator::SKIP_DOTS), RecursiveIteratorIterator::CHILD_FIRST);
foreach ($iterator as $file)
{
if ($file->isDir())
{
rmdir($file->getPathname());
}
else
{
unlink($file->getPathname());
}
}
rmdir($path);
}
}