Foros del Web » Programando para Internet » PHP »

[ Ayuda]Como cojer la extension de un archivo en PHP

Estas en el tema de [ Ayuda]Como cojer la extension de un archivo en PHP en el foro de PHP en Foros del Web. Estoy haciendo un upload de archivos de video en PHP y me falla en el tema de la extension o tamaño del archivo. Quiero que ...

  #1 (permalink)  
Antiguo 22/08/2008, 04:42
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Exclamación [ Ayuda]Como cojer la extension de un archivo en PHP

Estoy haciendo un upload de archivos de video en PHP y me falla en el tema de la extension o tamaño del archivo.

Quiero que me filtre las extensiones y solo acepte las .avi y .mov

Lo estoy probando en local.

Os dejo el codigo de las 2 paginas.

Index.php
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<
html>
<
head>
    <
title>Subir archivos</title>
    <
link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</
head>

<
body>
<
h1>Subir archivos</h1>
<
br>
    <
form action="subearchivo.php" method="post" enctype="multipart/form-data" name="form1">
        <
b>Nombre del video:</b
        <
br>
        <
input type="text" name="cadenatexto" size="20"  maxlength="100">
       <
p> <b>Descripcion:</b><br>
        <
textarea name="descripcion" cols="20" rows="5">
        </
textarea>
        <
input type="hidden" name="MAX_FILE_SIZE" value="2000000000">
        <
br>
        <
br>
        <
b>Enviar un nuevo archivo: </b>
        <
br>
        <
input name="video" type="file">
        <
br>
        <
input type="submit" value="submit">
    </
form>
</
body>
</
html
Subearchivo.php
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Subiendo una nueva foto</title>
    <link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];
   
    
$extension=$HTTP_POST_FILES['userfile']['type']; 
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
if (!((
strpos($extension"avi") || strpos($extension"mov")) && ($tamano_archivo 10000000000))) {
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
  #2 (permalink)  
Antiguo 22/08/2008, 04:59
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Para saber si es .avi o .mov puedes usar esta función (preg_match()) :
Código PHP:
  $bool preg_match('/(\.avi|\.mov)$/',$nombre); //$nombre es el nombre de archivo 
$bool es 0 (no coincide) o 1 (coincide).
Puedes saltarte eso e hacer directamente "if(preg_match(...))"
__________________
Un Lannister siempre cumple sus promesas
  #3 (permalink)  
Antiguo 22/08/2008, 05:18
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Primero gracias por responder ;)

He probado el codigo pero me deja pasar cualquier archivo.

Lee los comentarios del codigo por si lo he hecho bien.

Saludos

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Subiendo una nueva foto</title>
    <link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD
   
    
$bool preg_match('/(\.avi|\.mov)$/',$uploadfile_temporal); //aqui esta la funcion de boleano
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
if ((
$bool=0) && ($tamano_archivo 10000000000)) { // aqui esta la comprobacion
    
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
  #4 (permalink)  
Antiguo 22/08/2008, 05:30
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

creo que deberias cambiar esto:

Código PHP:
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD 
    
    
$bool preg_match('/(\.avi|\.mov)$/',$uploadfile_temporal); //aqui esta la funcion de boleano 
por esto:

Código PHP:
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD 
    
    
$bool preg_match('/(\.avi|\.mov)$/',$_FILES['video']['name']); //aqui esta la funcion de boleano 
Creo que debes buscar la extension del archivo en su nombre real $_FILES['video']['name'] y no en el nombre temporal que se le da $uploadfile_temporal
  #5 (permalink)  
Antiguo 22/08/2008, 05:36
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

lo he cambiado pero no me funcionaba ya que me daba error por

aun asi me sigue subiendo todo tipo de archivos. :S
  #6 (permalink)  
Antiguo 22/08/2008, 05:38
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Código PHP:
if (($bool=0) && ($tamano_archivo 10000000000)) { // aqui esta la comprobacion 
Esto está mal. $bool=0 no compara, iguala a 0. Esto siempre será cierto porque puedes (en PHP) igualar cualquier cosa a cualquier cosa. Tienes que hacer $bool==0 para comparar, aunque en este caso es absurdo, simplemente así ya funciona:
Código PHP:
if ($bool && ($tamano_archivo 10000000000)) { // aqui esta la comprobacion 
Y lo que dice nx00 también. El nombre temporal es uno "aleatorio" (no lo es, pero para el tratamiento en la expresión regular, como si lo fuera).
__________________
Un Lannister siempre cumple sus promesas
  #7 (permalink)  
Antiguo 22/08/2008, 05:40
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

intentalo asi:

Código PHP:
$ext=false;

if(!
eregi("avi",$_FILES["video"]["type"])) { $ext=true; }
if(!
eregi("mov",$_FILES["video"]["type"])) { $ext=true; }

if(!
$ext) {echo "archivo incorrecto";exit;} 
  #8 (permalink)  
Antiguo 22/08/2008, 05:48
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Ahora lo he puesto de la manera que me habeis dicho ( probe la ultima de nx00 y no me funciono ), no se que hago mal :S llevo asi 4 dias :S

Mirad si encontrais algo que a mi se me escape.

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Subiendo una nueva foto</title>
    <link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD
   
    
$bool preg_match('/(\.avi|\.mov)$/',$uploadfile_temporal); //aqui esta la funcion de boleano
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
if (
$bool && ($tamano_archivo 10000000000)) { // aqui esta la comprobacion 
    
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
  #9 (permalink)  
Antiguo 22/08/2008, 05:51
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

y esto...

Código PHP:
$archivo=$_FILES['video']['name'];

$validar=strrev($archivo);

$validar=substr($validar,0,3);
$validar=strrev($validar);

if(
strcmp($validar,"avi")===|| strcmp($validar,"mov")===)
{
    echo 
"error";exit;

  #10 (permalink)  
Antiguo 22/08/2008, 05:54
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

nx00 tu expresión regular no va porque tanto "avion" como "fichero.avi" dan el mismo resultado ($ext = null), fichero incorrecto.

Por otro lado, error mío en el if, debía ser:
Código PHP:
 if (!$bool && ($tamano_archivo 10000000000)) { // aqui esta la comprobacion 
El ! para hacerlo cierto si la extensión no es correcta (0).
Por otro lado, ¿estás seguro que quieres que el archivo sea MAYOR que 10000000000 bytes - 10 GB - para que sea válido? Creo que es un error.
__________________
Un Lannister siempre cumple sus promesas
  #11 (permalink)  
Antiguo 22/08/2008, 05:56
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

lo de 10gb es de prueba, lo puse a lo loco ^^,

voy a probar vuestras soluciones y os comento
  #12 (permalink)  
Antiguo 22/08/2008, 05:59
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Mort20, ahora no me acepta ni los .avi

:S
  #13 (permalink)  
Antiguo 22/08/2008, 06:02
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

si probaste lo último que dije, es normal que rechace avi. Si lo que querias era solo dejar pasar avi y mov prueba asi:

Código PHP:
$archivo=$_FILES['video']['name']; 

$validar=strrev($archivo); 

$validar=substr($validar,0,3); 
$validar=strrev($validar); 

if(
strcmp($validar,"avi")!=|| strcmp($validar,"mov")!=

    echo 
"error";exit; 

  #14 (permalink)  
Antiguo 22/08/2008, 06:04
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Recuerda que el .avi debe pesar más de 10 GB, dudo que tengas un .avi de más de 10 GB en tu PC XDDD Y en todo caso, aunque sea en local, el disco duro creo que tardaría un poco en copiarlo a otra parte de tu PC. Puede que el PHP pare si excede una cantidad de tiempo determinada - no lo sé, es una hipótesis, pero me parecería lógico al crear un lenguaje xD -.
__________________
Un Lannister siempre cumple sus promesas
  #15 (permalink)  
Antiguo 22/08/2008, 06:04
 
Fecha de Ingreso: junio-2005
Mensajes: 343
Antigüedad: 18 años, 10 meses
Puntos: 10
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

y si haces lo siguiente:

$arrayPermitidas = array("AVI","MOV");

$partes = explode(".",$_FILE....['name']);

if (array_key_exists(strtoupper($partes[(count($partes)-1)]),$arrayPermitidas){
/*
* Tu código
*/

}else{
/* ERROR */
}
  #16 (permalink)  
Antiguo 22/08/2008, 06:06
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

en principio pone < 1000000 ( he puesto los 0 que he querido xD )

pero a qui pone menor no mayor :S
  #17 (permalink)  
Antiguo 22/08/2008, 06:07
 
Fecha de Ingreso: agosto-2007
Mensajes: 345
Antigüedad: 16 años, 8 meses
Puntos: 21
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

avi de 10GB....

tanto necesitas ?. Para subir archivos de ese tamaño tendrias que cambiar la configuracion del servidor.

- dejar que php pueda ejecutar un script por mas de 30seg
- aumentar el tamaño de los ficheros que se suben (por defecto 2mb)

y seguramente alguna cosa mas...
  #18 (permalink)  
Antiguo 22/08/2008, 06:10
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

nono, en principio pone menor no mayor :S
  #19 (permalink)  
Antiguo 22/08/2008, 06:12
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Cita:
Iniciado por Shagraarath Ver Mensaje
en principio pone < 1000000 ( he puesto los 0 que he querido xD )

pero a qui pone menor no mayor :S
¿estás seguro que comprendes el significado de lo que haces? xD
Pone que si es menor, entonces se ejecuta el if, donde pones que es un archivo INCORRECTO y no lo subes.
Si no (mayor o igual), entonces ejecutas el cuerpo del else dónde sí subes el archivo.
__________________
Un Lannister siempre cumple sus promesas
  #20 (permalink)  
Antiguo 22/08/2008, 06:15
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

aaa xD tienes razon xD

auqneu ahora he cambiado el < pro el > y no va :S
  #21 (permalink)  
Antiguo 22/08/2008, 06:16
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Además, ahora que me doy cuenta, aplicas un AND.
Si el archivo NO es ni .avi ni mov, Y es menor que 1 MB (según tú última corrección), entonces es incorrecto.
Por lo que si NO es .avi ni .mov PERO es mayor o igual que 1 MB, entonces es correcto y al revés.
Debes aplicar un OR (si uno o lo otro, incorrecto), para que deba ser .avi o .mov y además ser mayor o igual que 1 MB para ser correcto.
__________________
Un Lannister siempre cumple sus promesas
  #22 (permalink)  
Antiguo 22/08/2008, 06:19
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

ahora he puesto el or y no xuta xDDDDD
  #23 (permalink)  
Antiguo 22/08/2008, 06:22
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Vuelve a poner el archivo de validación, que entre tantos cambios yo ya me he perdido xD
__________________
Un Lannister siempre cumple sus promesas
  #24 (permalink)  
Antiguo 22/08/2008, 06:24
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Aqui lo tienes.

Que lio
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Subiendo una nueva foto</title>
    <link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD
   
    
$bool preg_match('/(\.avi|\.mov)$/',$uploadfile_temporal); //aqui esta la funcion de boleano
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
   
if (!
$bool || ($tamano_archivo 10000000)) { // aqui esta la comprobacion 
    
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
  #25 (permalink)  
Antiguo 22/08/2008, 06:50
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

probad el codigo en vuestras casas, en el primer post os he dejado el Index.php donde esta el formulario.

estoy asqueado x_D
  #26 (permalink)  
Antiguo 22/08/2008, 07:06
Avatar de Mort20  
Fecha de Ingreso: junio-2008
Ubicación: Roca Casterly
Mensajes: 141
Antigüedad: 15 años, 11 meses
Puntos: 2
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Sigues con el error de comparar con el fichero temporal. Debes usar $_FILES['video]['name'] para obtener el nombre "real" con su extensión.
$_FILES['video']['tmp_name'] es un nombre asignado por el PHP para que él lo pueda almacenar, pero es distinto al nombre que tiene el archivo que envía el usuario generalmente - o eso creo según lo que dice la referencia del manual del PHP -.
Código:

Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
    <title>Subiendo una nueva foto</title>
    <link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD
   
    
$bool preg_match('/(\.avi|\.mov)$/',$_FILES['video']['name']); //aqui esta la funcion de boleano
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
   
if (!
$bool || ($tamano_archivo 10000000)) { // aqui esta la comprobacion 
    
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
Y por cierto, veo que usas unos parámetros $_GET con el mismo nombre que el formulario, pero en el formulario usas post y no get. ¿No es otro error?
__________________
Un Lannister siempre cumple sus promesas
  #27 (permalink)  
Antiguo 22/08/2008, 18:38
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Shagraarath:
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
de esta forma sabes el tipo de archivo.
Debes hacer un:
echo "$tipo_archivo";
y segun lo que te da, que en el caso de imagenes jpg
nos da img/jpeg
Entonces lo que vas a comparar NO es "avi" ni "mov"
pero probablemente sera algo como
"video/avi" o "video/mov"
revisa como se definen los tipos para los archivos mov
y avi.
En el archivo de los mime_types del Apache lo definen asi:
video/x-msvideo para avi
Y para mov, lo puedes buscar en el mismo archivo.
Saludos
Y espero te ayude
Franco
  #28 (permalink)  
Antiguo 25/08/2008, 01:27
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

[ Quien pueda que me ayude ]

me estoy haciendo bastante lio, si me pudieran decir que parte del codigo modificar :S

os vuelvo a dejar el codigo.. he buscado mucho pero no me veo capaz de resolver el problema :S

He visto que los .avi me los coje con extension " video/x-msvideo " pero no se como ponerlos en esta linea.
$bool = preg_match('/(\video/x-msvideo|\.mov)$/',$uploadfile_temporal);



me sale este error: Warning: preg_match() [function.preg-match]: Unknown modifier '-' in

Código PHP:
<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD
   
    
$bool preg_match('/(\.avi|\.mov)$/',$_FILES['video']['name']); //aqui esta la funcion de boleano
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
   
if (!
$bool || ($tamano_archivo 10000000)) { // aqui esta la comprobacion 
    
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>

Última edición por Shagraarath; 25/08/2008 a las 02:19
  #29 (permalink)  
Antiguo 25/08/2008, 02:31
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Cita:
Iniciado por Shagraarath Ver Mensaje
[ Quien pueda que me ayude ]

me estoy haciendo bastante lio, si me pudieran decir que parte del codigo modificar :S

os vuelvo a dejar el codigo.. he buscado mucho pero no me veo capaz de resolver el problema :S

He visto que los .avi me los coje con extension " video/x-msvideo " pero no se como ponerlos en esta linea.
$bool = preg_match('/(\video/x-msvideo|\.mov)$/',$uploadfile_temporal);



me sale este error: Warning: preg_match() [function.preg-match]: Unknown modifier '-' in

Código PHP:
<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?php
if($_FILES['video']['name']!=NULL)
 {
     
$nombre= ($_GET["cadenatexto"]);
    
$descripcion= ($_GET["descripcion"]);
    
   
$uploadfile_temporal=$_FILES['video']['tmp_name'];// en principio aqui me pilla el nombre no? xD
   
    
$bool preg_match('/(\.avi|\.mov)$/',$_FILES['video']['name']); //aqui esta la funcion de boleano
   
   
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
   
$uploadfile_nombre="videos/".$_FILES['video']['name'];
   
$ruta_video='videos/'.$_FILES['video']['name'];
   
if (!
$bool || ($tamano_archivo 10000000)) { // aqui esta la comprobacion 
    
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .avi o .mov<br><li>se permiten archivos de 100Mb máximo.</td></tr></table>";
}else{
     
move_uploaded_file($uploadfile_temporal,$uploadfile_nombre);
     
$ingresar="insert into videos (ID,Nombre, Ruta, descripcion) values ('','$nombre', '$uploadfile_nombre','$descripcion')"
     
$link mysql_connect("localhost""root");
        
mysql_select_db("deporte",$link);
     if(
mysql_query($ingresar))
     {
       echo 
"El video ha sido ingresado correctamente";
     }
     else
     {  
       echo 
"Error al ingresar el video";
     }
   }
 }  
?>
 
<br>
<br>
<a href="index.php">Volver</a>
<br>
</div>
</body>
</html>
Tienes que escapar el guion (-), hazlo asi:
Código PHP:
$bool preg_match('/(\video/x\-msvideo|\.mov)$/',$uploadfile_temporal); 
  #30 (permalink)  
Antiguo 25/08/2008, 02:34
Avatar de Shagraarath  
Fecha de Ingreso: agosto-2008
Mensajes: 151
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: [ Ayuda]Como cojer la extension de un archivo en PHP

Buenas DooBie, gracias por responder,.

He probado lo que me comentas y me sale este error:

Warning: preg_match() [function.preg-match]: Unknown modifier '\' in
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 15:27.