Home / Progetti / Progetti / Classe per caricare immagini in PHP
Mattepuffo

Classe per caricare immagini in PHP

Classe per caricare immagini in PHP

Oggi vi propongo una semplice classe per il caricamento delle immaigni in PHP.

Uso la libreria Imagick che richiede che venga installato il pacchetto php5-imagick.

In verità in molte distro è già preinstallato, ed inoltre non ho avuto problemi su nessun servizio di hosting che usando.

Quindi direi che non dobbiamo preoccuparci molto per questo.

 

In tutto ci sono tre metodi, oltre al costruttore:

  • check -> fa alcuni controlli prima del caricamento
  • uploadImage -> carica l'immagine nella directory specificata
  • uploadImageScale -> carica l'immagine scalando la dimensione; se passate zero a un parametro, verrà calcolato automaticamente

Ecco la classe:

<?php

/**
 * @author Matteo Ferrone
 * @since 2015-10-31
 */
class ImageUpload {

    private $image;
    private $fileTmpName;
    private $fileName;
    private $fileSize;
    private $fileType;

    /**
     * Setup ImageUpload
     *
     * @param type $fileTmpName
     * @param type $fileName
     * @param type $fileSize
     * @param type $fileType
     */
    public function __construct($fileTmpName, $fileName, $fileSize, $fileType) {
        $this->fileTmpName = $fileTmpName;
        $this->fileName = $fileName;
        $this->fileSize = $fileSize;
        $this->fileType = $fileType;
        $this->image = new Imagick($this->fileTmpName);
    }

    /**
     * Check images
     *
     * @param type $typeArray
     * @param type $maxSize
     * @return boolean|string
     */
    public function check($typeArray, $maxSize = 1024) {
        $fileSizeMB = $this->fileSize / 1024;
        if (is_uploaded_file($this->fileTmpName)) {
            if (!in_array($this->fileType, $typeArray)) {
                return '<p class="error">Il file non è tra quelli ammessi</p>';
            } elseif ($fileSizeMB > $maxSize) {
                return '<p class="error">Il file è troppo grande</p>';
            } else {
                return TRUE;
            }
        } else {
            return '<p class="error">Si è verficato un errore o non è stato inviato nessun file</p>';
        }
    }

    /**
     * Upload without scaling
     *
     * @param type $finalName
     * @return string
     */
    public function uploadImage($finalName) {
        $this->image->writeimage($finalName);
        return '<p>File caricato</p>';
    }

    /**
     * Upload with scaling
     *
     * @param type $width
     * @param type $heigth
     * @param type $finalName
     * @return string
     */
    public function uploadImageScale($width, $heigth, $finalName) {
        $this->image->scaleimage($width, $heigth);
        $this->image->writeimage($finalName);
        return '<p>File caricato</p>';
    }

}

Al prossimo aggiornamento!

Enjoy!