Foros del Web » Programando para Internet » PHP »

subir archivo a una carpeta

Estas en el tema de subir archivo a una carpeta en el foro de PHP en Foros del Web. Buenos días a todos/as: Agradecería que alguien me orientara en lo siguiente: Tengo el siguiente fichero para subir archivos a una carpeta creada con la ...
  #1 (permalink)  
Antiguo 10/06/2008, 02:25
 
Fecha de Ingreso: agosto-2005
Mensajes: 70
Antigüedad: 18 años, 8 meses
Puntos: 0
De acuerdo subir archivo a una carpeta

Buenos días a todos/as:

Agradecería que alguien me orientara en lo siguiente:


Tengo el siguiente fichero para subir archivos a una carpeta creada con la siguiente instrucción en el insert cuando doy de alta un nuevo usuario con su contraseña para que luego pueda validarse.

La instrucción es:
Código PHP:
$sql "INSERT INTO usuarios ($campos) VALUES($valores)";        
    
$res mysql_query($sql) or die (mysql_error());
    
$param mysql_insert_id($cnx);
    
    
$creado=mkdir("../../presupuestos/$param"); 
Esto me crea una carpeta con el numero de id que se asigna al nuevo usuario para posteriormente subir a su carpeta sus archivos correspondiente a los cuales accedera con su password y contraseña.

El problema viene que no se cómo recuperar ese id a la hora de subir los archivos,
que me los deja en la carpeta presupuestos en vez de su carpeta con el número de la id asignado.

El código que tengo en el fichero de subir archivos es el siguiente:

Código PHP:

<?php

include ("../../includes/config.php");
include (
"../../includes/funciones.php");
$cnx =conectar();
$sql="SELECT * FROM usuarios";
$res=mysql_query($sql) or die("Error en el servidor");
if(
mysql_num_rows($res) > 0){
$param $_GET['id'];
}
if(isset(
$_POST['Submit'])){
$extension explode(".",$_FILES['archivo']['name']); 
$num count($extension)-1
if(
$extension[$num] == "jpg" || $extension[$num] == "JPG" || $extension[$num] == "gif" || $extension[$num] == "htm") { 

    if(
$_FILES['archivo']['size'] < 300000
        { 
            
            
//         ++ INICIO COPIA
            
if(copy($_FILES['archivo']['tmp_name'], "../../presupuestos/$param/".$_FILES['archivo']['name']))
            { 
                echo 
"archivo subido con exito"
            }else{
                echo 
"error al copiar el archivo";
            }
            
//        ++ FIN COPIA
            
        
}else{
            
//        ['archivo']['size'] > 300000
            
echo "el archivo supera los 300kb"
        } 
    }else{ 
    
//        $extension !=jpg o gif o png
    
echo "el formato de archivo no es valido"
}

mysql_free_result($res);
mysql_close($cnx);

}
?>

Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
 
    <input name="archivo" type="file" id="archivo" />

    <input type="submit" name="Submit" value="Enviar" />
</form> 
Código PHP:

<?php
echo "<br />\n";
echo 
"<td><a href='../directorio/utabla_prueba.php'>Volver</a></td>\n"
?>

¿Que estoy haciendo mal?

Muchas gracias.

Lyra
  #2 (permalink)  
Antiguo 10/06/2008, 02:42
Avatar de Tokkara  
Fecha de Ingreso: junio-2008
Mensajes: 131
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: subir archivo a una carpeta

Hola saludos,

el $param = $_GET["id"], de donde viene ese $_GET["id"], tu formulario es tipo post???. Prueba lo siguiente
Código PHP:
if(mysql_num_rows($res) > 0){
$row mysql_fetch_array($res);
$param $row["id"];

Tambien te recomendaria cambiar la sql
Código PHP:
$sql "SELECT id FROM usuarios where id = $id_usuario_extraer"
si solo necesitas la id, usa la id no toda la tabla.

Y por ultimo, usa move_uploades_files en vez de copy, es mucho mas seguro.
  #3 (permalink)  
Antiguo 12/06/2008, 12:00
 
Fecha de Ingreso: agosto-2005
Mensajes: 70
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: subir archivo a una carpeta

Gracias por tu ayuda Tokkara. He llegado a lasulicón de la siguiente manera. La mando al foro por si alguien le interesa:

Código PHP:
<?php

include ("../../includes/config.php");
include (
"../../includes/funciones.php");
$param $_POST['id'];

if(isset(
$_POST['Submit'])){
$extension explode(".",$_FILES['archivo']['name']); 
$num count($extension)-1
if(
$extension[$num] == "jpg" || $extension[$num] == "JPG" || $extension[$num] == "gif" || $extension[$num] == "htm" || $extension[$num] == "doc" ) { 

    if(
$_FILES['archivo']['size'] < 300000
        { 
            
            
//         ++ INICIO COPIA
            
if(copy($_FILES['archivo']['tmp_name'], "../../presupuestos/$param/".$_FILES['archivo']['name']))
            { 
                echo 
"<span class='Estilo2'>archivo subido con exito</span>"
            }else{
                echo 
"<span class='Estilo2'>error al copiar el archivo</span>";
            }
            
//        ++ FIN COPIA
            
        
}else{
            
//        ['archivo']['size'] > 300000
            
echo "<span class='Estilo2'>el archivo supera los 300kb</span>"
        } 
    }else{ 
    
//        $extension !=jpg o gif o png
    
echo "<span class='Estilo2'>el formato de archivo no es valido</span>"
}

mysql_free_result($res);
mysql_close($cnx);
echo 
"<br />";
echo 
"<br />";
echo 
"<td><a href='../directorio/utabla_prueba.php' class='Estilo2'>Volver</a></td>\n"
exit;
}
?>
Código HTML:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data" name="form1" id="form1">
 	<input type="hidden" name="id" id="id" value = "<?= $_GET['id'];?>"/>
    <input name="archivo" type="file" id="archivo" />

    <input type="submit" name="Submit" value="Enviar" />
</form> 
El id lo paso desde otro archivo donde hago la select.

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 02:20.