reenadak icon

File Upload

reenadak | PRO | 02/20/18 07:07:52 PM UTC | 0 ⭐ | 470 👁️ | Never ⏰ | []
PHP |

3.54 KB

|

None

|

0 👍

/

0 👎

    
    /*
    - File Upload
    - Allows the upload of a file with specified (or no) limitations.
    - Returns 0 on success
    - Returns 1 if overwrite is disabled and file already exists
    - Returns 2 if it does not meet any valid extensions
    - Returns 3 if a max file size is set and this file exceeds it
    - Returns 4 if width is smaller than min width or height is smaller than min height
    - Returns 5 if width is larger than max width or height is larger than max height
    - Returns 6 if an unexpected error occurred and the file couldn't be uploaded
    
    $file            - $_FILES['filename']; from a form with input type="file" and name="filename"
    $newLocation     - The directory relative to the location of this script to move the file to,
                       directory will be created if it does not exist already.
    $newName         - The new name of the file without the extension (eg. "image")
    $validExtensions - Array containing a list of valid extensions, file will be blocked if it does
                       not have any one of these extensions (set it to null for no limits on extensions)
    $overwrite       - Overwrite the file if it already exists in this place and as this name?
    $isImage         - If only images can be uploaded, set this to true.
    $minImgWidth     - The minimum width the image can be. Set to 0 for no minimum width.
    $minImgHeight    - The minimuim height the image can be. Set to 0 for no minimum height.
    $maxImgWidth     - The maximum width the image can be. Set to 0 for no maximum width.
    $maxImgHeight    - The maximum height the image can be. Set to 0 for no maximum height.
    $maxSize         - Max size the file can be in bytes, set to 0 for unlimited.
    */
    public function upload($file, $newLocation, $newName, $validExtensions = null, $overwrite = true, $isImage = false, $minImgWidth = 0, $minImgHeight = 0, $maxImgWidth = 0, $maxImgHeight = 0, $maxSize = 8388608) {
        
        $fileType = pathinfo($file['name'], PATHINFO_EXTENSION);
        $targFile = $newLocation . $newName . "." . $fileType;
        
        $failed = false;
        
        if (!$overwrite && file_exists($targFile)) {
            return 1;
            $failed = true;
        }
        
        if (!$failed) {
            if ($validExtensions != null) {
                $validExt = false;
                foreach ($validExtensions as $validExtension) {
                    if ($fileType == $validExtension)
                        $validExt = true;
                }
                if (!$validExt) {
                    return 2;
                    $failed = true;
                }
            }
            
            if (!$failed) {
                if ($maxSize > 0) {
                    if ($file['size'] > $maxSize) {
                        return 3;
                        $failed = true;
                    }
                }
                
                if (!$failed) {
                    if ($isImage) {
                        list($width, $height) = getimagesize($file['tmp_name']);
 
                        if ($minImgWidth > 0) {
                            if ($width < $minImgWidth) {
                                return 4;
                                $failed = true;
                            }
                        }
 
                        if ($minImgHeight > 0) {
                            if (!$failed) {
                                if ($height < $minImgHeight) {
                                    return 4;
                                    $failed = true;
                                }
                            }
                        }
 
                        if ($maxImgWidth > 0) {
                            if (!$failed) {
                                if ($width > $maxImgWidth) {
                                    return 5;
                                    $failed = true;
                                }
                            }
                        }
 
                        if ($maxImgHeight > 0) {
                            if (!$failed) {
                                if ($height > $maxImgHeight) {
                                    return 5;
                                    $failed = true;
                                }
                            }
                        }
                    }
                    
                    if (!$failed) {
                        if (!file_exists($newLocation))
                            mkdir($newLocation);
                        
                        if (move_uploaded_file($file['tmp_name'], $targFile))
                            return 0;
                        else
                            return 6;
                    }
                }
            }
        }
                
        return 0;
    }

Comments