File not found when giving

Asked

Viewed 580 times

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 button Save it should redirect to the URL that is on action, Only when you click it a short time by clicking and I get the message

FILE NOT FOUND

Firefox failed to locate the file http://alexandrecoluna.com/includes/casos.lib.php.

Check that the file name has typos, such as an uppercase letter instead of lowercase. Check whether the file has been moved, renamed or deleted.

The strange thing is that it only happens if I select multiple images across the field "Imagery" where I can select and send multiple images. In case I don’t put any image in this field it register 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;
        }
    }
}
?>
  • Are you using a jQuery library to send files to the server ? Put some of the code so people can help you, the HTML itself seems to have no problem.

  • @Guilhermelopes I’m not using jQuery to upload files. HTML and PHP only

  • In PHP, you use $_FILES ? Strange it does not find the file when you insert an image and find when not to put, should give some other error instead of this... Make sure when inserting the image there is nothing that changes the form action...

  • Yes, use $_FILES . The strange thing is that in the field Cover Photo which is only one, if I choose a photo and give Save without choosing the photos of the post (that would be the one to choose multiple photos) it will right. Now I put 1 image or more in the photos of the post he already gives that stick.

  • It would be interesting to post PHP, HTML apparently is ok.

  • @Diego Added

  • Both <input type="file"> are sharing the same id, this may be affecting the logic of submit

Show 2 more comments
No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.