Foros del Web » Programando para Internet » PHP »

Subir archivo a carpeta especifica

Estas en el tema de Subir archivo a carpeta especifica en el foro de PHP en Foros del Web. Hola! tengo un pequeño problema que no se solucionar, principalmente por que no se que falla , les cuento, queria crear un sistema para que ...
  #1 (permalink)  
Antiguo 12/08/2008, 07:28
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 17 años, 3 meses
Puntos: 5
Pregunta Subir archivo a carpeta especifica

Hola! tengo un pequeño problema que no se solucionar, principalmente por que no se que falla , les cuento, queria crear un sistema para que mis visitantes pudieran subir sus canciones a mi web, asi que cree estas paginas:
grupo.html--> aqui los usuarios escogen el nombre de su grupo y de la carpeta que va a contener sus canciones
crear.php-->Aqui se crea la carpeta y esta el formulario para subir las canciones
subearchivo.php-->Aqui se sube el archivo al servidor, pero el problema es que no lo sube a la carpeta que quiero, por ejemplo, tengo todos los archivos en la carpeta upload, pues la carpeta que se tiene que crear se crea bien en la ruta upload/carpeta, pero luego a la hora de subir el archivo en vez de subirlo a upload/carpeta lo sube a upload, les dejo los codigos:

grupo.php:
Código PHP:
<html>
<
head>
<
title>Nombre de tu grupo</title>
</
head>
<
body>
<
center>
<
form action="crear.php" enctype="multipart/form-data" method="post">
    <
table>
        <
tr>
            <
td>Nombre de tu grupo</td>
            <
td><input name="grupo" type="text" /></td>
        </
tr>
        <
tr>
            <
td></td>
            <
td><input name="grupos" type="submit" value="continuar" /></td>
        </
tr>
    </
table>
</
form>
</
body>
</
html
crear.php:
Código PHP:
<?

$ftp_direccion 
""// si estuviera este script en un servidor externo poner la ip o dominio 
$ftp_usuario "";
$ftp_password "";

$dire "/upload/$grupo"// establecemos el nombre del directorio que queremos crear

if($ftp=ftp_connect($ftp_direccion)) // Intentamos conectar al ftp
{
    if(
ftp_login($ftp,$ftp_usuario,$ftp_password)) // Si conectamos hacemos la autentificación
    
{
         
// Cambiamos a modo pasivo
        
ftp_pasv($ftp1);
        
// Entramos dentro de public_html que es donde se cran los directorios normalmente
        
ftp_chdir($ftp,"/public_html/");
        
// Creamos el directorio
        
ftp_mkdir($ftp,$dire);

        
ftp_close($ftp);
    }
    else 
// falló la autentificación
    
{
        echo 
"Fallo en la autentificacion";
        exit;
    }
}
else 
// Error en la conexión mostramos error en pantalla
{
     echo 
"Error de conexion con el servidor";
     exit;
}

?>  

<html>
<center>
<form action="subearchivo.php" method="post" enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        <br>
        <br>
        <b>Enviar un nuevo archivo: </b>
        <br>
        <input name="userfile" type="file">
                <br>
                <input type="radio" name="<?php echo $grupo;?>" value="<?php echo $grupo;?>" checked>Tus archivos subiran a la carpeta <?php echo $grupo;?>
        <br>
        <input type="submit" value="Enviar">
    </form>
</html>
subearchivo.php
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Subiendo una nueva cancion</title>
    <link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br> 
<div align="center">
<?
$nombre_archivo 
$HTTP_POST_FILES['userfile']['name'];
$tipo_archivo $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo"gif") || strpos($tipo_archivo"jpeg")) && ($tamano_archivo 100000))) {
    echo 
"La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
    if (
move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $grupo.$nombre_archivo)){
        echo 
"El archivo ha sido cargado correctamente.";
    }else{
        echo 
"Ocurrió algún error al subir el fichero. No pudo guardarse.";
    }
}
?>
<br>
<br>
</div>
</body>
</html>
__________________
Videos de Metal

Última edición por juanitTo; 12/08/2008 a las 07:35
  #2 (permalink)  
Antiguo 12/08/2008, 07:45
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subir archivo a carpeta especifica

no t compliques tanto amigo, has un simple upload y declaras una variable llamada por ejemplo $fold ... donde ella sea = a lo q se envia a nombre por decirlo asi... entonces si el grupo se llama X la carpeta se llamara X... t dejo un ejemplo

Código PHP:
<?php include('conect.php');
extract($_POST);
if (isset(
$_POST['enviar'])) {
    
$query "INSERT INTO trucks SET
            unit = '$unit',
            stock = '$stock',
            brand = '$brand',
            year = '$year',
            model = '$model',
            mileage = '$mileage',
            engine = '$engine',
            suspension = '$suspension',
            discharge = '$discharge',
            f_tires = '$f_tires',
            r_tires = '$r_tires',
            d_band = '$d_band',
            d_cap = '$d_cap',
            horas = '$horas',
            serialnum = '$serialnum',
            cabina = '$cabina',
            aire = '$aire',
            radio = '$radio',
            pump_m = '$pump_m',
            pump_s = '$pump_s',
            type = '$type',
            disp = '$disp'"
;
            
            
mysql_query($query);
        
            
mkdir("files/$stock");
        
            
$msj="El registro ha sido agregado con exito.";
            }
?>
en mi caso coloque el campo stock en el formulario y stock es un numero de serie q el usuario ingresa
y fijate q solo hago mkdir("files/$stock"); para crear un directorio dentro de la carpeta files...
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #3 (permalink)  
Antiguo 12/08/2008, 07:48
Avatar de T4ke0veR  
Fecha de Ingreso: agosto-2007
Ubicación: Quito - Ecuador
Mensajes: 1.720
Antigüedad: 16 años, 8 meses
Puntos: 28
Respuesta: Subir archivo a carpeta especifica

ah... en tu caso, seria mas facil...
mkdir("upload/$grupo"); ...

intentalo.. Suerte
__________________
Diseño gráfico, Web, imagen corporativa, publicidad ...
  #4 (permalink)  
Antiguo 12/08/2008, 08:47
Avatar de Avatar810  
Fecha de Ingreso: agosto-2007
Ubicación: Por rumbos Regios
Mensajes: 485
Antigüedad: 16 años, 8 meses
Puntos: 23
Respuesta: Subir archivo a carpeta especifica

Para iniciar te recomiendo dejes de usar las variables globales, pues no es la mejor forma de programar, ademas que en ocaciones te puede dar lios. (este es el caso)

Pues basado en tu pregunta original creo que el error esta en este INPUT

En sube archivo haces referencia a una variable $grupo, la cual se supone estas recibiendo de crear.php pero en realidad no existe ese campo

<input type="radio" name="<?php echo $grupo;?>" value="<?php echo $grupo;?>" checked>Tus archivos subiran a la carpeta <?php echo $grupo;?>

El campo se llama como EL CONTENIDO DE $grupo. Pon name="grupo" y ahor si recibiras el parametro correcto

Al intentar mover el archivo como no encuentra la variable grupo pues lo deja en raiz.

Si quieres ver que variable recibes utuiliza
<?
$print_r($_POST);
$print_r($_GET);
$print_r($_SESSION);
$print_r($_FILE);
?>
y te mostrara todas las variable que recibes y sus correspondiente valores.

Como comentario adicional si mal no recuerdo las referencias a variables que usas ya estan obsoletas ($HTTP_POST_FILES) deberia usar $_POST, $_GET, $_FILES., $_SESSION, etc
  #5 (permalink)  
Antiguo 12/08/2008, 11:39
Avatar de juanitTo  
Fecha de Ingreso: enero-2007
Mensajes: 406
Antigüedad: 17 años, 3 meses
Puntos: 5
Respuesta: Subir archivo a carpeta especifica

Hola! Lo he solucionado, solo he tenido que cambiar una cosa en subearchivo.php:
Cita:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
<title>Subiendo una nueva cancion</title>
<link rel="STYLESHEET" type="text/css" href="estilos_admin.css">
</head>

<body>
<h1>Subiendo un archivo</h1>
<br>
<div align="center">
<?
$nombre_archivo = $HTTP_POST_FILES['userfile']['name'];
$carpeta = "$grupo/$nombre_archivo";
$tipo_archivo = $HTTP_POST_FILES['userfile']['type'];
$tamano_archivo = $HTTP_POST_FILES['userfile']['size'];
//compruebo si las características del archivo son las que deseo
if (!((strpos($tipo_archivo, "gif") || strpos($tipo_archivo, "jpeg")) && ($tamano_archivo < 100000))) {
echo "La extensión o el tamaño de los archivos no es correcta. <br><br><table><tr><td><li>Se permiten archivos .gif o .jpg<br><li>se permiten archivos de 100 Kb máximo.</td></tr></table>";
}else{
if (move_uploaded_file($HTTP_POST_FILES['userfile']['tmp_name'], $carpeta)){
echo "El archivo ha sido cargado correctamente.";
}else{
echo "Ocurrió algún error al subir el fichero. No pudo guardarse.";
}
}
?>
<br>
<br>
</div>
</body>
</html>
Muchisimas gracias!
__________________
Videos de Metal

Última edición por juanitTo; 12/08/2008 a las 12:04
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 04:13.