Foros del Web » Programando para Internet » PHP »

Subir archivo swf

Estas en el tema de Subir archivo swf en el foro de PHP en Foros del Web. Hola!! Tengo un problema. Uso este script que he creado: Código PHP: //Antes hay más cosas, pero creo que no son útiles, si alguien me lo pide se las muestro: $nombre  =  $_POST [ 'nombre' ]; $descripcion = $_POST [ 'descripcion' ]; ...
  #1 (permalink)  
Antiguo 09/09/2008, 08:14
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Subir archivo swf

Hola!!

Tengo un problema.

Uso este script que he creado:

Código PHP:
//Antes hay más cosas, pero creo que no son útiles, si alguien me lo pide se las muestro:

$nombre $_POST['nombre'];
$descripcion=$_POST['descripcion'];
$nombreinterno=$_FILES['file']['name'];
$fecha date("Y-m-d");
$destino './juegos';

if(
strlen($nombre)==0){
echo 
$nombre;
echo 
"No se ha escrito nombre.";
exit();
}
if(
strlen($descripcion)==0){
echo 
$descripcion;
echo 
"No se ha escrito descripción.";
exit();
}


//Conexión mysql

$compnombre=mysql_query("SELECT COUNT(nombre) FROM juegos WHERE nombreinterno='$nombreinterno'");
  
$existenombre=mysql_result($compnombre,0);
  if(
$existenombre>0){
  echo 
"Ya existe un juego con este nombre, vuelve a intentarlo cambiándole el nombre desde tu pc";
  exit();
  }
// Leemos el tamaño/tipo del fichero
$tamano $_FILES 'file' ][ 'size' ];
$tipo $_FILES 'file' ][ 'type' ];
// Comprobamos el tamaño/tipo

if($tipo=="application/x-shockwave-flash"){

if( 
$tamano 1048576 ){
move_uploaded_file $_FILES 'file' ][ 'tmp_name' ], $destino '/' $nombreinterno);  
}else{
echo 
"El tamaño es superior al permitido: 1 Mb. Tu archivo: " $tamano;
}


mysql_query("INSERT INTO juegos (nombre,nombreinterno,descripcion,tamano,enviador,fecha) VALUES ('$nombre','$nombreinterno','$descripcion','$tamano','$user','$fecha')") or die (mysql_error());
echo 
"El juego " $nombre " ha sido enviado con &eacute;xito" "<br />" "Gracias por tu colaboraci&oacute;n" '<br /><br /><a href="./newgame.html">NUEVO</a>';

}else{
//Desde aquí, no es .swf
echo "Formato de archivo no v&aacute;lido. Aceptable: .swf";
exit();

El problema es que cuando relleno todos los campos excepto el de file, funciona bien.

Cuando relleno todos los campos, incluyendo el de file, me dice:

No se ha escrito nombre, mientras que yo, en el form, sí he rellenado ese campo.

¿Cuál puede ser el problema?


Form:

Código HTML:
<form action="newgame.php" method="POST" enctype="multipart/form-data">
 
                      <input type="text" name="nombre" maxlength="20" />
                   <textarea cols="25" rows="5" name="descripcion"></textarea>

                     <input type="file" name="file" />
               
                      <input name="submit" type="submit" value="Enviar el juego" />
                  </form> 
Edito: He puesto un echo "tipo: " . $tipo;

exit();

Y me muestra esto:

tipo:

...es decir, no toma el valor type de $_FILES

Última edición por yonolose; 09/09/2008 a las 08:28
  #2 (permalink)  
Antiguo 09/09/2008, 08:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subir archivo swf

Prueba hacer un var_dump($_FILES) para que veas los elementos del array, luego ve el valor de $_FILES['file']['error'] y comparalo con la lista de errores en el manual de PHP.

Saludos.
  #3 (permalink)  
Antiguo 09/09/2008, 08:45
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Subir archivo swf

me aparece esto:

array(0) { }

Yo he hecho esto:

Código PHP:
var_dump($_FILES);

echo 
$_FILES['file']['error'];

exit(); 
  #4 (permalink)  
Antiguo 09/09/2008, 09:07
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subir archivo swf

Mmm muy raro, haz verificado que tengas activado el uso de file_uploads en tu php.ini?

Saludos.
  #5 (permalink)  
Antiguo 10/09/2008, 03:18
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Subir archivo swf

Bueno... yo no uso php en mi pc, yo subo los archivos al servidor y ahí compruebo su funcionamiento.

He descubierto que cuando relleno el campo file me aparece esto:

array(0) { }

Pero cuando no lo relleno aparece esto:

array(1) { ["file"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } } 4
  #6 (permalink)  
Antiguo 10/09/2008, 07:33
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Subir archivo swf

Sí, está activado el file_uploads, porque hice la prueba subiendo una imagen, desde otra página de mi web.

Lo que hace el script es eliminar o vaciar la $_POST, cuando subo el fichero, cuando no subo nada, siguen los valores en $_POST.

¿Cuál puede ser el problema?

Última edición por yonolose; 10/09/2008 a las 08:16
  #7 (permalink)  
Antiguo 10/09/2008, 09:18
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Subir archivo swf

he probado el mismo script (QUITANDO LA CONEXIÓN MYSQL) en localhost, y funciona perfectamente.

¿Puede ser problema del servidor?
  #8 (permalink)  
Antiguo 12/09/2008, 08:13
(Desactivado)
 
Fecha de Ingreso: marzo-2008
Mensajes: 641
Antigüedad: 16 años, 1 mes
Puntos: 7
Respuesta: Subir archivo swf

Ya resolví el error (aunque sigo sin saber cuál era) con otro script:

Código PHP:
function subir_fichero()
{


//Otras variables
$fecha date("Y-m-d");
$tamano_fic=2097152;

    
// Datos del archivo original
    
$fichero=$_FILES['archivo']['name'];        // Nombre del fichero
    
$fichero=strtolower($fichero);                // Nombre del fichero (minúsculas)
    
$directorio="./juegos/";                                 // Directorio
    
$fichero_ruta="$directorio$fichero";        // Ruta del fichero donde se guardara
    
$temporal=$_FILES['archivo']['tmp_name'];   // Ruta del fichero temporal
    
$tipo $_FILES 'archivo' ][ 'type' ];        //Tipo mime del fichero

    //Si queremos que sea un tipo de fichero obligatorio
        
if(strlen($oblitipo)!=0){
    if(
$tipo!=$oblitipo){
    echo (
'<p>El tipo de fichero no es válido. Debe ser: ' $oblitipo '</p>');
    exit();
    }
    }
   
    
// Comprobar que esta subido, de forma temporal
    
if (!is_uploaded_file ($temporal)){
        echo (
'<p>No ha seleccionado el archivo.</p>');
        exit();
        }
       
    
// Comprobar que no exista
    
if(file_exists ($fichero_ruta)){
        echo (
'<p>El fichero ya existe ('.$fichero_ruta.')</p>');
        exit();
        }
       
    
// Mover a la ruta
    
move_uploaded_file($temporal,$fichero_ruta);
   
    
// Comprobar tamaño, en bytes
    
$tamano=filesize($fichero_ruta);
    if (
$tamano>$tamano_fic){
        echo (
'<p>Ese archivo no se puede subir, es demasiado grande ('.$tamano_fic.' bytes como máximo).</p>');
        
unlink($fichero_ruta);
        exit();
        }


    
// Dirección del fichero
    
$fichero_ruta2=str_replace ('./','',$fichero_ruta);     // Quitar el ./ inicial
    
$link2=pathinfo($_SERVER['PHP_SELF']);                    // Información sobre la ruta
    
$link='http://'.$_SERVER['HTTP_HOST'].$link2[dirname].'/'.$fichero_ruta2;

    
// Datos del fichero nuevo
    
echo '<h2>Datos del fichero.</h2>';
    echo 
'Ruta relativa: '.$fichero_ruta.'<br />';
    echo 
'Ruta absoluta: '.$link.'<br />';
    echo 
'Tamaño: '.$tamano.' (bytes)<br />';
    echo 
'Tipo (mime): '.$tipo.'</p>';
   
        
//Mostrar información aparte
    
if(strlen($moreinfo)!=0){
    echo 
"<br /><hr />" $moreinfo;
    }

Saludos

PDTA: Creo que lo de la $moreinfo no funciona, ¿hay algo mal?
  #9 (permalink)  
Antiguo 12/09/2008, 08:19
 
Fecha de Ingreso: septiembre-2008
Mensajes: 15
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Subir archivo swf

pues yo no veo ningun sitio donde se le de valor a $moreinfo

Falta codigo?
  #10 (permalink)  
Antiguo 12/09/2008, 08:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Subir archivo swf

Mmm muy raro esto, tienes activado de casualidad register_globals en tu servidor?

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:30.