Foros del Web » Programando para Internet » PHP »

No me funciona put_ftp

Estas en el tema de No me funciona put_ftp en el foro de PHP en Foros del Web. Bueno señores, como no puede cambiar los permisos de una carpeta a la que debia suboir imagines via formulario (no me permitio chmod 777) decidi ...
  #1 (permalink)  
Antiguo 06/10/2003, 18:01
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 3 meses
Puntos: 22
No me funciona put_ftp

Bueno señores, como no puede cambiar los permisos de una carpeta a la que debia suboir imagines via formulario (no me permitio chmod 777) decidi subirlos por FTP.

Cree una carpeta que se llama fotos inmediatamente debajo de la carpeta de incio de mi sitio, a esta carpeta deben subirse las fotos.

Para subir las fotos tengo lo siguinete:

<?

$ftp_server = "xx.xx.xx.xx";
$ftp_user = "xxxxxxxxx";
$ftp_pass = "xxxxxxx";
$source_file="c:/foto.jpg";
$destination_file="./fotos".$source_file;

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");
// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) {
echo "Connected as $ftp_user@$ftp_server\n";
$subir = ftp_put($conn_id, $destination_file, $source_file, FTP_ASCII);
} else {
echo "Couldn't connect as $ftp_user\n";
}


?>

Ya lo pobe con FTP_BINARY y en ambos casos el resultado es el mismo no sube nada!!

Agradecer cualquier ayuda.

Saludos.
  #2 (permalink)  
Antiguo 06/10/2003, 18:35
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
no se , pero me parece que tienes de darle el directorio de destino con ftp_chdir()


Código PHP:
$ftp_contenido=//direcotrio a colocar la foto desde la raiz del sitio

//cuidado no de la carpeta del directorio publico sino de antes

/public_html/fotos

if(!ftp_chdir($ftp_connect$ftp_contenido))
{
    echo 
"<li>Se ha producido un error al entrar en el directorio $ftp_contenido";
    exit;

}

if(!
ftp_put($ftp_con,$source_file,"",FTP_BINARY)){
    echo 
"<li>Imposible recuperar fichero $source_file";
    exit;
}

ftp_quit($ftp_connect); 
espero que te sirva

PD, por cierto las fotos es en BINARY, ASCII es para texto
  #3 (permalink)  
Antiguo 06/10/2003, 19:46
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 3 meses
Puntos: 22
Gracias Jordi1 me ayudaste mucho trabaje en ello.

Saludos.
  #4 (permalink)  
Antiguo 06/10/2003, 20:04
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 3 meses
Puntos: 22
Una cuestin mas, ya no marca ningún error pero parece ser que ahora el problema es que estoy direccionando mal el archivo local, me explico, lo que quiero es subir un archivo que se llama powell7.jpg yq ue esta en raiz de C: y para tal motivo lo puse asi:

ftp_put($conexion,"c:/powell7.jpg","/public_htm/fotos",FTP_BINARY);

Pero tampoco funciona, habár algún problema?

<?

$ftp_server = "xx.xx.xx.xx";
$ftp_user = "xxxxxxx";
$ftp_pass = "xxxxxxx";
$destination_file=$source_file;

// set up a connection or die
$conexion=ftp_connect($ftp_server);
$conn_id = ftp_login($conexion, $ftp_user, $ftp_pass) or die("Couldn't connect to $ftp_server");
ftp_chdir($conexion,"public_html/fotos");
ftp_put($conexion,"c:/powell7.jpg","/public_htm/fotos",FTP_BINARY);
echo "Current directory : ", ftp_pwd($conexion), "\n";



?>

Saludos.
  #5 (permalink)  
Antiguo 07/10/2003, 01:39
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Ten en cuenta que PHP se ejecuta en el servidor. Asi que desde el punto de vista de las funciones FTP de PHP, el servidor es el CLIENTE FTP. Asi, si quieres subir un fichero a tu servidor web con FTP, debes conectarte a un servidor FTP donde este el fichero a subir. Es decir, los datos que pasas a ftp_connect() deben ser los datos del servidor FTP donde se encuentra el fichero remoto "powell7.jpg".

Asi que si lo que estas buscando es un metodo de subir ficheros de cualquier maquina cliente, este metodo no sirve.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 07/10/2003, 02:38
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
bueno, disculpa josemi pero disiento un poco,

el ftp_connect es el ftp del servidor, y si quiere subir un archivo desde local hasta el servidor lo puede hacer con un formulario y un campo file

puedes usar este codigo, te aseguro que funciona pues yo lo utilizo para subir archivos (ojo no mas de 2 megas, en mi servidor)

los datos son los del ftp del servidor, y en mi local no tengo servidor ftp.
Código PHP:
function connect_ftp()
{      
        global 
$login_ftp,$pass_ftp,$ftp;
        
set_time_limit(0);
        
$ftp_con ftp_connect($ftp);
        if(!
ftp_login($ftp_con,$login_ftp ,$pass_ftp ))
        {
        echo 
"No se ha podido realizar la conexión ";
        exit();
        }
        return 
$ftp_con ;
}
$ftp_contenido="/public_html/dir_destino";
$producto $_FILES['upload']['name'];
$ftp_con=connect_ftp();
   

if(!
ftp_chdir($ftp_con$ftp_contenido))
{
    echo 
"<li>Se ha producido un error al entrar en el directorio $ftp_contenido";
    exit;

}

if(!
ftp_put($ftp_con,$producto,"",FTP_BINARY)){
    echo 
"<li>Imposible recuperar fichero $producto";
    exit;
    }



ftp_quit($ftp_con); 
solo te tienes de construir un formulario con un campo type file
pruebalo y nos diras

un saludo
  #7 (permalink)  
Antiguo 07/10/2003, 03:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Jordi1, el codigo que pones es para mover un fichero subido con upload a un servidor FTP (sea el mismo que el que recibe el upload o cualquier otro).

Pero lo que a mi me a parecido entender es que intentar subir directamente el fichero desde el equipo cliente SIN hacer el upload. Lo digo porque pone en el codigo directamente la ruta del fichero "c:/powell7.jpg".

Tu codigo no hace el upload desde el cliente via FTP, sino con HTTP. Esa es la diferencia. Tu usas las funciones FTP con el fichero que esta en la maquina que tiene el PHP, que es el cliente FTP de las funciones FTP de PHP.

No se si lo estoy aclarando mas o liandolo del todo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 07/10/2003, 03:13
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
bueno si josemi es verdad, tienes razon, utilizo las funciones ftp del servidor con el archivo que ya esta alli.

Y no se puede si no tienes servidor ftp en local transferir un archivo de local a servidor, (o eso creo)

pero lo que entiendo que quiere Elalux
Cita:
Bueno señores, como no puede cambiar los permisos de una carpeta a la que debia suboir imagines via formulario (no me permitio chmod 777) decidi subirlos por FTP.
es hacer upload con ftp, por eso de este codigo que creo le puede funcionar para lo que quiere.

un saludo a los dos
  #9 (permalink)  
Antiguo 07/10/2003, 03:49
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, acepto mi parte de culpa. Quizas fui demasiado categorico diciendo que no se podia con FTP. Deberia haber puesto "no se puede solo con FTP, seria necesario subir primero el fichero con un upload HTTP".

Por eso tu codigo si serviria. Hace el upload en 2 pasos. Primero el upload HTTP al servidor, para despues el "upload" FTP al directorio final.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 07/10/2003, 04:14
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
jajaj, no hay culpas de nadie, faltaria mas, tampoco me explique bien en el primer post,

Lo importante creo es poder ayudar al que tiene un problema y sobretodo aprender, que te aseguro en estos foros aprendo mogollon,

y como bien dices tu en la firma

aprendiz de mucho y maestro de poco..... que razon tienes, nos lo tenemos de aplicar muchas personas

un saludo
  #11 (permalink)  
Antiguo 08/10/2003, 17:29
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 3 meses
Puntos: 22
o sea el cliente es en realidad el servidor el remoto, estoy bien?
  #12 (permalink)  
Antiguo 08/10/2003, 17:32
 
Fecha de Ingreso: enero-2002
Mensajes: 4.159
Antigüedad: 22 años, 3 meses
Puntos: 22
Ah ya entendi, logro hacer duncionar el script via HTTP pero este post sobre FTP resulto muy edcativo, mucha sgracias a todos.

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 16:48.