Foros del Web » Programando para Internet » PHP »

Problemas con envío de ficheros

Estas en el tema de Problemas con envío de ficheros en el foro de PHP en Foros del Web. Buenas tardes: Estoy creando un formulario para subir un fichero por FTP al servidor a una carpeta protegida. Aún no he configurado la conexión FTP, ...
  #1 (permalink)  
Antiguo 25/07/2008, 12:26
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Pregunta Problemas con envío de ficheros

Buenas tardes:

Estoy creando un formulario para subir un fichero por FTP al servidor a una carpeta protegida.

Aún no he configurado la conexión FTP, porque me han surgido una serie de problemas al realizar el envío del fichero.

La idea es la siguiente. Necesito enviar un fichero que he de renombrar con los datos recogidos en el formulario y después subirlo por FTP. Los datos a recoger son: nif (de cliente), modelo (impreso), ejercicio y periodo. Con estos datos, la idea es formar el nombre, el cual no tengo problema de generarlo, a través de los datos enviados por el formulario.

Sin embargo, he encontrado problemas al 'recibir' el fichero y renombrar éste, ya que por más que lo intento, no consigo 'trabajar' con el fichero.

Les adjunto código del formulario y del fichero que renombraría y subiría éste.

Espero que me puedan ayudar.

Muchas gracias de antemano.

Saludos.
Archivo 1
Código PHP:
            <form action="./index2.php?pag=17" method="post" class="admForm" enctype="multipart/form-data">
                <table align="center" border="0">
                    <tr>
                        <td>
                <fieldset>
                    <legend>Datos Empresa</legend>
                    <label for="empresa">Empresa</label>
                    <input type="text" value="<?php echo $empresa?>" name="empresa" disabled="disabled" />
                    <input type="hidden" value="<?php echo $empresa?>" name="empresa"  />
                    <label for="nif">NIF</label>
                    <input type="text" value="<?php echo $nif?>" name="nif" disabled="disabled" />
                    <input type="hidden" value="<?php echo $nif?>" name="nif" />
                </fieldset>
                        </td>
                    </tr>
                       <tr>
                        <td>
                <fieldset>
                    <legend>Datos Modelo</legend>
                    <label for="modelo">Modelo</label>
                    <input type="text" name="modelo" class="formInput" />
                    <label for="ejercicio">Ejercicio</label>
                    <input type="text" name="ejercicio" class="formInput" />
                    <label for="periodo">Periodo</label>
                    <input type="text" name="periodo" class="formInput" />                
                </fieldset>
                        </td>
                    </tr>
                    <tr>
                        <td>        
                <fieldset>
                    <legend>Fichero a Subir</legend>
                    <label for="impreso">Selecciona Fichero</label>
                    <input type="file" name="impreso" />
                </fieldset>
                           </td>
                       </tr>
                    <tr>
                        <td align="center">         
                <input type="submit" value="enviar" class="formBoton" />
                <input type="reset" value="borrar" class="formBoton" />
                        </td>
                    </tr>        
                </table>
            </form>
Archivo 2
Código PHP:
<?php
if ($_SESSION['nivel'] < 2) {
    echo 
"No está autorizado a ver esta página.";

} else {
    
// creación de variables con los datos recibidos
    
$empresa $_POST['empresa'];
    
$nif $_POST['nif'];
    
$modelo $_POST['modelo'];
    
$ejercicio $_POST['ejercicio'];
    
$periodo $_POST['periodo'];
        
    echo 
$empresa." - ".$nif." - ".$modelo." - ".$ejercicio." - ".$periodo."<br />"
    
    
$nombre_fichero $nif."_".$ejercicio.$periodo.$modelo;
    
    echo 
$nombre_fichero."<br />";
    
    
    
// trabajo con el archivo
    
if (isset ($_POST['impreso'])) {
        if (
is_uploaded_file($_FILES['impreso']['name'])) {
            
$nombre_origen $_FILES['impreso']['name'];
            
$nombre_extension strtolower(substr($nombre_origen,strpos($nombre_origen,".")));

            echo 
"el fichero ha subido";
            echo 
$nombre_origen." - ".$nombre_extension;
            
        }else{
            echo 
"la estoy cagando";
        
        }
    
    }else{
        echo 
"no se envía fichero.";
    }
}
?>
  #2 (permalink)  
Antiguo 25/07/2008, 14:07
Avatar de emiliodeg  
Fecha de Ingreso: septiembre-2005
Ubicación: Córdoba
Mensajes: 1.830
Antigüedad: 18 años, 7 meses
Puntos: 55
Respuesta: Problemas con envío de ficheros

ojo con is_uploaded_file que no siemrpe funciona! no recuerdo las especificacione sde eta funcion en este momemnto

cambiala por move_uploaded_file($_FILES['archivo']['tmp_name'],$carpeta_destino.$el_nombre_que_quieras_ponerle.$ extenison);

slaudos
__________________
Degiovanni Emilio
developtus.com
  #3 (permalink)  
Antiguo 26/07/2008, 06:54
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con envío de ficheros

Muchas gracias, pero se me plantea un problema, que quizá se pueda solucionar de otra manera.
La carpeta a la que tengo que enviar los archivos, debe ser una protegida, porque incluye archivos que no deberían ser accesibles sin autentificación, por el tema de la LOPD.
Lo que he hecho, ha sido protegerla desde el hosting, cn una opción qe tiene el panel de control, que crea un '.htaccess', por eso tenía intención de hacer la subida por FTP.
Investigaré entonces la configuración de carpetas protegidas y utilizar 'move_uploaded_file'
Saludos.
  #4 (permalink)  
Antiguo 26/07/2008, 11:22
 
Fecha de Ingreso: noviembre-2007
Mensajes: 154
Antigüedad: 16 años, 5 meses
Puntos: 2
Respuesta: Problemas con envío de ficheros

Pues estoy encontrando un montón de problemas con esto, no consigo dar con el tema, quizá incluso sea problema de configuración de servidor, pero he probado tanto en local como en 'real' y nada.
El tema es que el directorio 'destino' lo tengo protegido con un '.htaccess' y no sé si es lo que está bloqueando, pero no se me ocurre otra forma de proteger el contenido del directorio, porque intenté ponerlo al mismo nivel del htdocs o raiz del servidor, pero en 'real' no puedo subir un nivel, para crear un directorio seguro.
Copio el código que tengo y comento que el resultado que me da es: "No se ha subido el fichero"

Código PHP:
    // trabajo con el archivo
    
if ($_FILES['impreso']) {
        
$fichero $_FILES['impreso'];
        
$destino = ($_SERVER['DOCUMENT_ROOT']."/destino/");
        
        if (!(
$_FILES['impreso']['tmp_name']!='')){
        echo 
"Sin fichero."//cuando se carga mal un archivo
        
exit();
        }
        
        elseif (
move_uploaded_file ($fichero$destino.$nombre_fichero)) {
            echo 
"el fichero se ha movido existosamente.";    
        }else{
            echo 
"No se ha subido el fichero.";
        }
        
    }else{
        echo 
"no se envía fichero.";
    } 

Si alguien piensa que es mejor otro modo de crear un directorio 'seguro', agradecería también la recomendación por esa parte.

Saludos y gracias
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 13:40.