File not found while giving submit

0

I have an HTML form:

<link rel="stylesheet" type="text/css" href="script/overlay-div/css/overlay-div.css">
<link rel="stylesheet" type="text/css" href="style/bootstrap.css">
<link rel="stylesheet" type="text/css" href="script/jquery-file-upload/css/jquery.fileupload-ui.css">
<h4>Casos 1</h4>
<h5>Inserir novo caso</h5>
<div>
    <div class="form">
        <form action="http://alexandrecoluna.com/includes/casos.lib.php" method="post" enctype="multipart/form-data">
            <label for="nome">Nome do Caso</label>
            <input type="text" name="nome" placeholder="Nome">

            <label for="descricao">Descrição</label>
            <textarea name="descricao" class="ckeditor"></textarea>

            <label for="link">Imagem de capa</label>
            <span class="file fileinput-button">
                <span>Selecione uma foto de capa</span>
                <input id="fileupload" type="file" name="imagem">
            </span>

            <label for="link">Imagens</label>
            <span class="file fileinput-button">
                <span>Selecione as fotos para o caso</span>
                <input id="fileupload" type="file" name="imagens[]" multiple>
            </span>
            <div class="progress" style="display: none;">
                <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%;"></div>
            </div>
            <div class="img-preview"></div>
            <div style="clear:both;"></div>

            <input type="hidden" name="action" value="INSERT">
            <input type="submit" value="Salvar">
            <input type="reset" value="Limpar">
        </form>
    </div>
</div>
<script type="text/javascript" src="script/jquery-file-upload/js/vendor/jquery.ui.widget.js"></script>
<script type="text/javascript" src="script/ckeditor/ckeditor.js"></script>
<script type="text/javascript">
$(function () {

    CKEDITOR.replace( 'descricao', {
        toolbar :
        [
            { name: 'basicstyles', items : [ 'Bold','Italic' ] },
            { name: 'paragraph', items : [ 'NumberedList','BulletedList' ] }
        ]
    });


});
</script>

After clicking the Save button it should redirect to the URL that is in action , but when it clicks it a little time loading and I get the message

  

FILE NOT FOUND

     

Firefox could not find the file    link .

     

Verify that the file name has typos, such as uppercase rather than lowercase.   Make sure the file has been moved, renamed, or deleted.

The strangest thing is that this happens only if I select multiple images through the Images field where I can select and send multiple images. If I do not put any image in this field it registers normal.

cases.lib.php

<?php

    include('class/Caso.class.php');

    if ($_SERVER['REQUEST_METHOD'] == 'POST') {

        $action = ($_POST['action'] != '') ? $_POST['action'] : '' ;

        switch ($action) {
            case 'INSERT':

                $caso = new Caso($_POST['nome'], $_POST['descricao'], $_FILES['imagem'], NULL, $_FILES['imagens']);
                $response = $caso->save();

                if ($response === true) {
                    echo '<script>alert("Cadastrado com sucesso");history.go(-1);</script>';
                }
                else {
                    echo json_encode(array ( 'status' => 'error', 'desc' => $response, 'fields' => array ($caso->nome, $caso->descricao, $caso->imagem, $caso->imagens)));
                }
                break;

            case 'UPDATE':
                if (!$_FILES['imagem'] && !$_FILES['imagens']) {
                    $caso = new Caso($_POST['nome'], $_POST['descricao'], false, $_POST['id'], false);
                    $response = $caso->update();
                }elseif(isset($_FILES['imagem']) && !$_FILES["imagens"]) {
                    $caso = new Caso($_POST['nome'], $_POST['descricao'], $_FILES['imagem'], $_POST['id'], false);
                    $response = $caso->update();
                }elseif(!$_FILES['imagem'] && isset($_FILES["imagens"])){
                    $caso = new Caso($_POST['nome'], $_POST['descricao'], false, $_POST['id'], $_FILES['imagens']);
                    $response = $caso->update();
                }else{
                    $caso = new Caso($_POST['nome'], $_POST['descricao'], $_FILES['imagem'], $_POST['id'], $_FILES['imagens']);
                    $response = $caso->update();
                }

                if ($response != FALSE) {
                    echo '<script>alert("Atualizado com sucesso");history.go(-1);</script>';
                } else {
                    echo json_encode(array ( 'status' => 'error', 'desc' => $response, 'fields' => array ($caso->nome, $_POST['descricao'], $caso->imagem)));
                }
                break;

            case 'DELETE':

                $caso = new Caso();
                $response = $caso->delete($_POST['id']);

                if ($response === true) {
                    echo 'true';
                } else {
                    echo $response;
                }
                break;

            default:

                break;
        }
    }

    function showCasos($qnt = NULL) {

        $db = new Connection();

        $qryStr = (isset($qnt)) ? 'SELECT * FROM acoluna_casos ORDER BY casos_id DESC LIMIT 0, ' . $qnt : 'SELECT * FROM acoluna_casos ORDER BY casos_id DESC;';
        $qry = mysql_query($qryStr);

        if ($qry) {
            while ($row = mysql_fetch_assoc($qry)) {
                $casos[] = new Caso($row['casos_nome'], $row['casos_descricao'], $row['casos_imagem'], $row['casos_id'], $row['casos_imagens']);
            }

            return (isset($casos)) ? $casos : FALSE;
        }
    }

    function getCaso($id) {
        $db = new Connection();

        if (is_numeric($id)) {
            $qryStr = "SELECT * FROM acoluna_casos WHERE casos_id='$id'";
            $qry = mysql_query($qryStr);

            if (mysql_num_rows($qry) == 1) {
                $row = mysql_fetch_assoc($qry);
                return new Caso($row['casos_nome'], $row['casos_descricao'], $row['casos_imagem'], $row['casos_id'], $row['casos_imagens']);
            }
            return NULL;
        }
    }
?>

Case.class.php

<?php

/*
//  Projeto:    Cadastro de dúvidas - Alexandre Coluna
//  Class:      Dúvidas
//  Descrição:  Usada para manipular as informações
//              inseridas pelo usuário.
*/
include_once('Connection.class.php');


class Caso
{
    const   DB_TABLE = 'acoluna_casos';

    private $id, $nome, $descricao, $imagem, $imagens;

    public function __construct($nome = NULL, $descricao = NULL, $imagem = NULL, $id = NULL, $imagens = NULL) {

        $this->nome = $this->encode_html($nome);
        $this->descricao = $this->encode_html($descricao);
        $this->imagem = $this->isImage($imagem);
        $this->imagens = $this->IsmultiUpload($imagens);

        if (isset($id)) {
            $this->id = $id;
        }
    }

    private function IsmultiUpload($imagem) {
        if (is_array($imagem)) {

            if (is_uploaded_file($imagem['tmp_name'][0])) {


                return $this->multiUpload($imagem);

            }
            else {
                $imagem = FALSE;
            }
        }
        return $imagem;
    }

    public function multiUpload($imagens){

        $arrayImagens = array();

        if(!empty($imagens['name'][0])){

            for($key = 0; $key <= count($imagens)-1; $key++){

                if(!is_null($imagens['name'][$key])){

                    do{
                        $fileName = $this->random(5);
                    }while(file_exists('images/'.$fileName.'.jpg'));


                    list($width_orig, $height_orig) = getimagesize($_FILES['imagens']['tmp_name'][$key]);

                    $image = copy($_FILES['imagens']['tmp_name'][$key], 'images/'.$fileName.'.jpg');

                    //setup the new size of the image
                    $height = 750;
                    $width = 650;
                    //$new_height * $ratio;

                    if($width_orig > $height_orig){
                    $height = ($width/$width_orig)*$height_orig;
                    // Se altura é maior que largura, dividimos a altura determinada pela original e multiplicamos a largura pelo resultado, para manter a proporção da imagem
                    } elseif($width_orig < $height_orig) {
                    $width = ($height/$height_orig)*$width_orig;
                    } // -> fim if

                    //move the file in the new location
                    move_uploaded_file($_FILES['imagens']['tmp_name'][$key], 'images/'.$fileName.'.jpg');


                    // resample the image
                    $new_image = imagecreatetruecolor($width, $height);
                    $old_image = imagecreatefromjpeg('images/'.$fileName.'.jpg');
                    imagecopyresampled($new_image,$old_image,0,0,0,0,$width, $height, $width_orig, $height_orig);

                    //output
                    imagejpeg($new_image, 'images/'.$fileName.'.jpg', 100);


                    $arrayImagens[] = $fileName.'.jpg';
                }
            }

            return json_encode($arrayImagens);

        }

        return FALSE;
    }

    ////////////////
    // Validação //
    ////////////////

    public function isLink($link) {
        $pattern = '/^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/';
        return (preg_match($pattern, $link)) ? $link : FALSE;
    }

    private function isImage($imagem) {
        if (is_array($imagem)) {

            if (is_uploaded_file($imagem['tmp_name'])) {

                $dirImg = 'images/';
                (!is_dir($dirImg)) ? mkdir($dirImg) : false;

                do {
                    $fileName = $this->random(5);
                } while (file_exists($dirImg . $fileName . '.jpg'));

                $this->resizeImage($imagem, $dirImg.$fileName.'.jpg');

                $imagem = $fileName . '.jpg';
            }
            else {
                $imagem = FALSE;
            }
        }
        return $imagem;
    }

    /**
     * [validate description]
     * @return [type] [description]
     */
    public function validate() {

        //$vars = get_class_vars(__CLASS__);
        // foreach ($vars as $row) {
        //  if ($row == FALSE) {
        //      $return .=
        //  }
        // }
        return ($this->nome != FALSE && $this->descricao != FALSE) ? TRUE : FALSE;
    }

    ////////////////////////
    // Funções Genéricas //
    ////////////////////////

    /**
     * Gera um número aleatório do tamanho definido
     * @param  Int $len Tamanho do número de saída
     * @return String      Retorna em texto os números gerados.
     */
    private function random($len) {
        $array = array("0","1","2","3","4","5","6","7","8","9");
        while(strlen(@$random) < $len){
            @$random = $random . $array[rand(0,9)];
        }
        return $random;
    }

    /**
     * Atalho para decodificar caracteres HTML e aspas
     * @param  String $str Texto a ser encodado
     * @return String      Texto convertido
     */
    public function encode_html($str) {
        return htmlentities($str, ENT_QUOTES, 'UTF-8');
    }

    /**
     * Atalho para converter caracteres HTML e aspas
     * @param  String $str Texto a ser convertido
     * @return String      Texto convertido com as opções: {ENT_QUOTES, UTF-8}
     */
    public function decode_html($str) {
        return html_entity_decode($str, ENT_QUOTES, 'UTF-8');
    }

    /**
     * Redimensionar a imagem
     * @param  [type] $image       [description]
     * @param  [type] $target_file [description]
     * @return [type]              [description]
     */
    private function resizeImage($image, $target_file) {
        // $image is the uploaded image
        list($width, $height) = getimagesize($image['tmp_name']);

        $image = copy($image['tmp_name'], $target_file);

        //setup the new size of the image
        $ratio = $width/$height;
        $new_height = 750;
        $new_width = 650;
        //$new_height * $ratio;


        if($width > $height){
        $new_height = ($new_width/$width)*$height;
        // Se altura é maior que largura, dividimos a altura determinada pela original e multiplicamos a largura pelo resultado, para manter a proporção da imagem
        } elseif($width < $height) {
        $new_width = ($new_height/$height)*$width;
        } // -> fim if


        //move the file in the new location
        move_uploaded_file($image['tmp_name'], $target_file);

        // resample the image
        $new_image = imagecreatetruecolor($new_width, $new_height);
        $old_image = imagecreatefromjpeg($target_file);
        imagecopyresampled($new_image,$old_image,0,0,0,0,$new_width, $new_height, $width, $height);

        //output
        imagejpeg($new_image, $target_file, 100);
    }

    //////////////////////////////////////////////////////
    // Funções para manipulação dos dados persistentes //
    //////////////////////////////////////////////////////

    /**
     * Salva os dados no banco de dados
     * @return Bool/String Retorna TRUE em caso de sucesso ou a mensagem do erro em caso de erro
     */
    public function save() {
        $response = $this->validate();
        if ($response) {
            $db = new Connection();
            $qryStr = "INSERT INTO ".self::DB_TABLE." VALUES ('', '".$this->nome."', '".$this->descricao."', '".$this->imagem."', '".$this->imagens."')";
            return (mysql_query($qryStr)) ? TRUE : 'Erro ao inserir mídia no banco de dados.';
        }
        return 'Erro na validação dos dados: <br>' . $response . '<br>' . $this->nome . ' <br> ' . $this->descricao;
    }

    /**
     * Atualiza os dados de do objeto no banco de dados
     * @return Bool/String Returna TRUE em caso de sucesso ou a mensagem do erro em caso de falha
     */
    public function update() {

        if ($this->validate()) {
            $db = new Connection();
            if ($this->imagem != false && $this->imagens == false) { //Se existir foto de capa e não existir imagens
                $qryStr = 'UPDATE ' . self::DB_TABLE . ' SET casos_nome="' . $this->nome . '", casos_descricao="' . $this->descricao . '", casos_imagem="' . $this->imagem . '" WHERE casos_id=' . $this->id . ';';
                $i = 1;
            } elseif($this->imagem == false && $this->imagens == false) { //Se não existir nem foto de capa nem imagens
                $qryStr = 'UPDATE ' . self::DB_TABLE . ' SET casos_nome="' . $this->nome . '", casos_descricao="' . $this->descricao . '" WHERE casos_id=' . $this->id . ';';
                $i = 2;
            }elseif($this->imagem == false && $this->imagens != false){ //Se não existir foto de capa mas existir imagens
                $qryStr = "UPDATE " . self::DB_TABLE . " SET casos_nome='" . $this->nome . "', casos_descricao='" . $this->descricao . "', casos_imagens='" . $this->imagens . "' WHERE casos_id=" . $this->id . ";";
                $i = 3;
            }elseif($this->imagem != false && $this->imagens != false){ //Se existir foto de capa e imagens
                $qryStr = "UPDATE " . self::DB_TABLE . " SET casos_nome='" . $this->nome . "', casos_descricao='" . $this->descricao . "', casos_imagem='" . $this->imagem . "', casos_imagens='".$this->imagens."' WHERE casos_id=" . $this->id . ";";
                $i = 4;
            }
            return mysql_query($qryStr) ? TRUE : FALSE;
        }
        return 'Erro na validação dos dados';
    }

    /**
     * Exclui permanentemente o objeto no banco de dados
     * @param  Int $id Número do registro do objeto no banco de dados
     * @return Bool/String     Retorna TRUE em caso de sucesso ou a mensagem do erro em caso de falha
     */
    public function delete($id) {
        if (isset($id)) {
            $db = new Connection();
            $searchQry = 'SELECT * FROM ' . self::DB_TABLE . ' WHERE casos_id="' . $id . '";';
            $qry = mysql_query($searchQry);

            if (mysql_num_rows($qry) != 1) {
                return 'Dúvida não encontrado no banco de dados.';
            }

            $qryStr = 'DELETE FROM ' . self::DB_TABLE . ' WHERE casos_id="' . $id . '";';
            return mysql_query($qryStr) ? TRUE : 'Erro ao excluir dúvida. Por favor, tente novamente mais tarde.';
        }
        return 'ID de dúvida inválido.';
    }

    //////////////////////
    // Métodos Mágicos //
    //////////////////////

    /**
     * Em caso de String, decodifica e retorna a variável
     * @param  String $var Texto a ser convertido
     * @return String      Em caso de String, retorna a variável decodificada
     */
    public function __get($var) {
        if (property_exists($this, $var)) {
            return (is_string($this->$var)) ? $this->decode_html($this->$var) : $this->$var;
        }
    }
}
?>
    
asked by anonymous 20.01.2016 / 20:12

0 answers