Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/09/2008, 08:58
Avatar de c4_esp_VR
c4_esp_VR
 
Fecha de Ingreso: julio-2008
Mensajes: 24
Antigüedad: 15 años, 10 meses
Puntos: 0
Comprobar archivos existentes FTP

Hola:

Estoy intentando comprobar si un archivo existe antes de subirlo al servidor mediante la función ftp_put de php

Para ello creo un formulario donde el usuario seleccionará el archivo a subir y luego pulsará aceptar.

Código PHP:
<form action="" method="post" enctype="multipart/form-data" name="form_ftp" id="form_ftp">

  <
div align="center">
    </
p>
  <
table width="763" border="0" align="center">
    <
tr>
      <
td width="439" height="37"><div align="right">Archivo
        
<input name="archivo" type="file" id="archivo" />
      </
div></td>
      <
td width="314"><div align="left"><font size="2" face="Verdana, Tahoma, Arial">
          <
input type="submit" name="Submit" value="Upload" />
      </
font></div></td>
    </
tr>
  </
table>
</
form
El formulario se reenvia a la misma url donde verificaremos si el archivo ya existe o no de la siguiente manera usando una librería que nos ayuda a la realización de la conexión al servidor


Código PHP:
 <?php
include('includes/ftpfunc.php'); //Incluye el archivo de funciones

    
if(!empty($HTTP_POST_FILES["archivo"]))
    {        
        
$id_ftp=ConectarFTP();
        
$ruta=ObtenerRuta();
        
$file $HTTP_POST_FILES["archivo"]["tmp_name"];//Es el archivo temporal creado en el hosting
        
$base_archivo basename($HTTP_POST_FILES["archivo"]["name"]);
        
$archivo $HTTP_POST_FILES["archivo"]["name"];
        
$dir $ruta.'/'.$_GET["dir"].'/'.$archivo;

        if(
file_exists('.'.$dir))
        {
?>
            El fichero ya existe, desea sobreescribirlo <a href="FTPExist.php?dir=<?php echo $dir ?>&file=<?php echo $file?>">SI</a> / <a href="claveftp.php?dir=<?php echo $_GET["dir"?>">NO</a>.
        <?php
        
}
        else
        {
            
$upload ftp_put($id_ftp$dir$fileFTP_BINARY);
            if (!
$upload)
            {
                
$status "Error al guardar: " $base_archivo;
                echo 
$status;
            }
            else
            {
                
$status "Éxito al guardar: " $base_archivo;
                echo 
$status;
            }
        }
        
        unset(
$HTTP_POST_FILES["archivo"]);
        
ftp_quit($id_ftp);
    }
    else
    {
        echo 
'ruta donde se subirá el archivo: '.$dir;
    }
Si el fichero no existe entonces se subirá al servidor pero si el fichero existe preguntará si se quiere sobreescribir. Si no se desea sobreescribir volverá a la url principal y si se desea sobreescribir se intentará subirlo desde otra url distinta llamada FileExist.php, a esta url le paso los parámetros que ftp_put requiere, es decir $dir y $file mediante $GET pero no los sube y siempre me da error.

Imagino que hay alguna solución para poder dejar que el usuario pueda o no sobreescribir el archivo, pero llevo horas buscando por internet y pegándome con el código pero no soy capaz.

Si alquien tiene alguna sujerencia, sería de agradecer.

Muchas gracias foreros del web.