Comunidad de diseño web y desarrollo en internet online

Problema con iseet ($_FILES)

Citar            
MensajeEscrito el 29 Ago 2013 10:04 pm
Hola a todos,
tengo un problema que he intentado resolver de todas las formas posibles y no lo consigo.

Tengo un formulario para subir un archivo y que éste se guarde en una base de datos MySQL.

El formulario es el siguiente:

Código HTML :

<form name="formularioAddFiles" enctype="multipart/form-data" action="<?php echo "./addFiles.php?name=" . $auxName; ?>" method="POST">
                        <div data-role="fieldcontain">
                            <label for="titulo">
                                Title for your file
                            </label>
                            <input name="titulo" data-mini="true" type="text" required>
                        </div>
                        <div data-role="fieldcontain">
                            <label for="labelFile">
                                Choose a file to upload
                            </label>
                            <input type="file" name="fichero" data-mini="true" >
                        </div>
                        <input type="submit" data-theme="e" name="addFile" data-mini="true" value="Upload file" >
                    </form>


Lo que hago es tener un input de tipo file y que al pulsar el botón "Upload file" se cargue un script php del mismo fichero. El script php es el siguiente:

Código PHP :

if (isset($_POST['addFile'])) {
                // Check if a file has been uploaded
               [b] if (isset($_FILES['fichero']))[/b] {
                    // Make sure the file was sent without errors
                    if ($_FILES['fichero']['error'] == 0) {
                        // Gather all required data
                        $name = $con->real_escape_string($_FILES['fichero']['name']);
                        $mime = $con->real_escape_string($_FILES['fichero']['type']);
                        $data = $con->real_escape_string(file_get_contents($_FILES ['fichero']['tmp_name']));
                        $size = intval($_FILES['fichero']['size']);
                        $title = $_POST['titulo'];

                        // Create the SQL query
                        $query = "INSERT INTO Files (ideaName, solver, fileName, title, mime, size, content) VALUES ('$auxName','$solverActual','$name','$title','$mime','$size','$data')";

                        // Check if it was successfull
                        if (mysqli_query($con, $query)) {
                            $mensaje = 2;
                        } else {
                            $mensaje = 3;
                        }
                    } else {
                        $mensaje = 4;
                    }
                } [b]else {
                    $mensaje = 5;
                }[/b]
            }


Tengo problemas en la línea en negrita, ya que, aunque cargue un fichero en el formulario, siempre va al else marcado en negrita al final y no entiendo porque... el resto del codigo no se si estará bien pero ni siquiera consigo que entre en esa parte.
Si hago un

Código PHP :

print_r($_FILES['fichero']);
me imprime un array vacío. He mirado el php.ini y he comprobado el tamaño de los ficheros que admite... he probado mil cosas y ya no se que hacer. ¿Alguna idea?

Gracias.

Por napemi

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ago 2013 04:30 am
Sustituye:

Código PHP :

if (isset($_FILES['archivo'])


Por:

Código PHP :

if (isset($_FILES))


Saludos.

Por joseayram

1 de clabLevel



Genero:Masculino  

Web Developer

chrome
Citar            
MensajeEscrito el 30 Ago 2013 12:39 pm
joseayram
Eso siempre va a resultar verdadero porque el array $_FILES está siempre definido (es superglobal).

napemi
Para mi tendrías que revisar primero la confguración de PHP y Apache (si es que estás usando Apache) respecto de los límites de subida de archivos. Prueba subiendo un archivo de 1kb.

Por DriverOp

Claber

2510 de clabLevel



 

opera
Citar            
MensajeEscrito el 30 Ago 2013 02:05 pm
Sí, revisé el archivo php.ini y el límite está ahora en archivos de 20MB (antes estaba fijado a 2MB) asi que no debería dar problemas. Uso PHP y luego estoy usando un servidor externo alojado en otra máquina, por lo que no uso phpmyadmin ni nada de eso.

Estoy intentando subir un archivo de 7kb.

He probado cambiando el isset por:
if (is_uploaded_file($_FILES['fichero']['tmp_name']))

pero me da el mismo problema :(

Por napemi

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ago 2013 04:35 pm
Tendría que tener el código en la mano para poder hacer un mejor diagnóstico.

Por DriverOp

Claber

2510 de clabLevel



 

opera

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.