43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
namespace api\utils;
 | 
						|
 | 
						|
use Psr\Http\Message\UploadedFileInterface;
 | 
						|
 | 
						|
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);
 | 
						|
    }
 | 
						|
} |