Foros del Web » Programando para Internet » PHP »

problemas para subir mediante FTP

Estas en el tema de problemas para subir mediante FTP en el foro de PHP en Foros del Web. hola a todos! Necesito subir archivos al servidor mediante FTP. Si estoy ejecutando la web en mi ordenador en modo local para subir al servidor ...

  #1 (permalink)  
Antiguo 20/08/2007, 12:20
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
problemas para subir mediante FTP

hola a todos!

Necesito subir archivos al servidor mediante FTP. Si estoy ejecutando la web en mi ordenador en modo local para subir al servidor funciona bien. El problema aparece cuando ejecuto en la red y desde ahí quiero subir al servidor, es decir, en modo on-line. No me da mensajes de error, al contrario, me dice que los archivos se han subido bien, ejecuta todo correctamente. Sin embargo, no se ha subido ningún archivo.

¿A alguien le ha pasado esto alguna vez?¡Es raro que suba desde local, pero no desde internet!

Muchas gracias y saludos
  #2 (permalink)  
Antiguo 20/08/2007, 12:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Que codigo estas utilizando?

Saludos.
  #3 (permalink)  
Antiguo 20/08/2007, 12:33
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Haber, pongo el código de la función que sube.

Código PHP:
function subirImagenFTP($nombre_local,$nombre_nuevo,$mini_local,$mini_nuevo){
    
// Primero creamos un ID de conexión a nuestro servidor
    
$cid ftp_connect("ftp.midominio.com");
    
// Luego creamos un login al mismo con nuestro usuario y contraseña
    
$usuario="miusuario";
    
$password="micontraseña";
    
$resultado ftp_login($cid$usuario,$password);//echo "hecho el login";
    // Comprobamos que se creo el Id de conexión y se pudo hacer el login
    
if ((!$cid) || (!$resultado)) {
        
//$salida= "<br> La conexión no se ha podido realizar. Puede deberse a que no está conectado a internet o el servidor al que             pretende conectarse no se encuentra operativo </br>";    
        
die("La conexión no se ha podido realizar. Puede deberse a que no está conectado a internet o el servidor al que             pretende conectarse no se encuentra operativo");
    } else {
        
$salida="<br> Conectado </br>";
        
//echo $salida;
    
}
    
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
    //servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
    
ftp_pasv ($cidtrue) ;
    
// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
    // esta por demás decir que este paso no es necesario.
    
ftp_chdir($cid"httpdocs/fotos");
    
$salida="<br> Cambiado al directorio necesario </br>"
    
//echo $salida;  
        
echo "nombre nuevo:".$nombre_nuevo;
        echo 
"nombre local:".$nombre_local;
    
$subido1ftp_put($cid,$nombre_nuevo,$nombre_local,FTP_BINARY);//echo "subido1";
    
$subido2ftp_put($cid,$mini_nuevo,$mini_local,FTP_BINARY);//echo "subido2";
    //echo ftp_pwd($cid);
    
if((!$subido1) || (!$subido2)){
        
$salida"<br> No se ha podido subir el archivo </br>"
    }
    else{
        
$salidatrue
    }
    
//cerramos la conexión FTP
    
ftp_close($cid);
    
//unset($_FILES["archivo"]); //Destruye la variable "archivo"
    
return $salida;
}

function 
comprobarImagen($nombre_local,$nombre_nuevo,$mini_local,$mini_nuevo){

    
$form1false;
    
$siz1false;
    
$arch1false;
    
$form2false;
    
$siz2false;
    
$arch2false;
    
    
$arch1$this->nombre_vacio($nombre_local);
    
$arch2$this->nombre_vacio($mini_local);
    
$nombre_nuevo$this->nombre_formato($nombre_local,$nombre_nuevo);
    if(
$nombre_nuevo!=false){
        
$form1true;
    }
    else{
        
$form1false;
    }
    
$mini_nuevo$this->nombre_formato($mini_local,$mini_nuevo);
    if(
$mini_nuevo!=false){
        
$form2true;
    }
    else{
        
$form2false;
    }
    
$siz1$this->archivo_tam($nombre_local);
    
$siz2$this->archivo_tam($mini_local);
    
    if((
$siz1)&&($form1)&&($arch1)&&($siz2)&&($form2)&&($arch2)){
            
//echo  "voy a subir la imagen";
        
$res=$this->subirImagenFTP($nombre_local,$nombre_nuevo,$mini_local,$mini_nuevo); //res es texto o true
        
$salida$res;//echo "imagen subida";
    
}
    else{
        
$salida"<br>No se han subido. Solucione los errores</br>";
        
$salida="Recuerde que el nombre no debe ser vacio. El formato debe ser jpg, gif o jpeg. El peso debe ser menor a 100KB.";
    }
    return 
$salida;
}

function 
nombre_vacio($nombre){
    if(empty(
$nombre)){
        
$archfalse;
    }
    else{
        
$archtrue;        
    }
    return 
arch;
}

function 
nombre_formato($nombre$nombre_nuevo){
    
$formato1=substr($nombre,-3,3);
    
$formato2=substr($nombre,-4,4);
    
    if((
strcasecmp($formato1,"jpg")==0)||(strcasecmp($formato1,"gif")==0)){
        
$salida.="<br> El formato del archivo es valido </br>";
        
$nombre_nuevo.= "." $formato1;
    }
    else if (
strcasecmp($formato2,"jpeg")==0){
        
$salida.="<br> El formato del archivo es valido </br>";
        
$nombre_nuevo.= "." $formato2;
    }
    else{
        
$salida.= "<br> El formato del archivo no es v&aacute;lido. El formato debe de ser: jpg, gif, jpeg </br>";
        
$nombre_nuevofalse;
    }
    
    return 
$nombre_nuevo;
}

function 
archivo_tam($nombre_local){
    if(
filesize($nombre_local)<100000){
        
$siztrue;        
    }
    else{
        
$sizfalse;    
    }
    return 
$siz;
}

function 
archivo_tipo($f){
    if(
filetype($f)=="file"){
        return 
true;
    }
    else{
        return 
false;
    }

gracias!!
  #4 (permalink)  
Antiguo 21/08/2007, 04:22
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

veo que a nadie se le ocurre qué le pasa a ese trozo de código!!

Me he dau cuenta que si intento obtener el filetype de lo que voy a subir, en localhost me dice que es tipo "file", pero online no devuelve nada, NADA!! ni siquiera unknown o false, NADA!! esta función se supone que siempre devuelve algo. ¿Cómo puede ser que no devuelva nada?

Acaso como estoy intentando subir desde un ordenador a internet hay que hacer algún otro paso intermedio??

alguien sabe algo??

graciassssssss
  #5 (permalink)  
Antiguo 21/08/2007, 10:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Como estas implementando esas funciones?

Saludos.
  #6 (permalink)  
Antiguo 21/08/2007, 11:03
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Qué funciones? las funciones a las que se llama en ese fragmento de código aparecen a continuación. Esta todo en el trozo de código que he puesto en el segundo mensaje.

Yo creo que el problema es que no coge el archivo de mi ordenador, por eso no encuentra el tipo de archivo y no sube nada, aunque eso no dé ningún error.
Ahora, por qué no coge el archivo...

Haber si alguien me puede ayudar...

Gracias por vuestra atención.

Saludos
  #7 (permalink)  
Antiguo 21/08/2007, 11:09
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.591
Antigüedad: 14 años, 2 meses
Puntos: 49
Re: problemas para subir mediante FTP

tienes permisos en las carpetas, en todo saldria algun tipo de error, pero de todas formas verifica los permisos de tu servidor...
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #8 (permalink)  
Antiguo 21/08/2007, 11:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

los permisos están bien. Si no, tampoco me dejaría subir cuando estoy ejecutando en local.

Desde localhost a servidor funciona bien. No funciona desde la red al servidor. supongo que entendéis lo que quiero decir,no?
  #9 (permalink)  
Antiguo 21/08/2007, 12:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

A lo que me refiero es que pongas el script donde llamas a la funcion subirImagenFTP y las que pusiste, esas son funciones solas pero no muestras el script donde las IMPLEMENTAS.

Saludos.
  #10 (permalink)  
Antiguo 21/08/2007, 12:35
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

ahi va donde hago la llamada:

Código PHP:
<?php include("seguridad.php");?>
<?php 
$ident
$_SESSION["insertar_piso_id"];
?>
<?
require_once("GestorImagenes.php");

$XAJAX_DIR "../librerias/xajax/";

// Require the new xajax object 
require_once($XAJAX_DIR "xajax.inc.php");

function 
getProcesar_formulario($form_entrada){
    
    
$gi=new GestorImagenes();
    
$idInmueble$_SESSION["insertar_piso_id"];
    
$result$gi->recuperarNumero($idInmueble);
    while(
$rowmysql_fetch_row($result)){
        
$numero$row[0];
    }
    
$numero$numero +1;
    
    
$nombre_local$form_entrada['archivo1'];
    
$mini_local$form_entrada['archivo2'];
    
$nombre_nuevo$idInmueble "_" $numero "_ima";    
    
$mini_nuevo$idInmueble "_" $numero "_mini";
    
$imagen_nom$nombre_nuevo;
    
$mini_nom$mini_nuevo;
    
    
$filetipe1filetype($nombre_local);
    
$filetipe2filetype($mini_local);
    
    
$tip1$gi->archivo_tipo($nombre_local); //devuelven true o mensaje error
    
$tip2$gi->archivo_tipo($mini_local);
    
    
$respuesta = new xajaxResponse();
    
    if(
$tip1 && $tip2){
        
$res1$gi->comprobarImagen($nombre_local,$nombre_nuevo,$mini_local,$mini_nuevo);
        
//$res=1;
        
if($res1==true){
            
$res2$gi->insertarImagen($idInmueble,$numero,$imagen_nom,$mini_nom);
            if(
$res2==1){
                
$mensaje="<br><strong>Los archivos se han subido con exito</strong></br>";
            }else{
                
$error="<strong>Error al subir los archivos</strong><br/>";
            }
            
            
        }
        else{
            
$error=$res1;
        }
        
        
$salida_bien$nombre_local "  ||  " $mini_local "   " $mensaje "  " .$filetipe1.  "  " $filetipe2."<br/>";
        
$respuesta->addAppend("Layer2","innerHTML"$salida_bien);
        
$respuesta->addAssign("Layer3","innerHTML""");
    }
    else{
        
//$mensaje= "Los parametros introducidos no son archivos";
        
$error="<br><strong>Los parametros introducidos no son archivos</strong></br>";
        
$salida_error$nombre_local "   " $mini_local "   " $error " ".$filetipe1." ".$filetipe2." ".$tip1." ".$tip2."<br/>";
        
$respuesta->addAssign("Layer3","innerHTML"$salida_error);
    }
/**/
    
        

   
$respuesta->addScript("limpiar()");   
   
//tenemos que devolver la instanciación del objeto xajaxResponse
   
return $respuesta;
}

$xajax = new xajax();
$xajax->registerFunction("getProcesar_formulario");
$xajax->processRequests();
//$xajax->debugOn();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Insertar Fotos</title>
<style type="text/css">

#Layer1 {
    position:absolute;
    left:15px;
    top:0px;
    width:848px;
    height:270px;
    z-index:1;
}
#Layer2 {
    position:absolute;
    left:11px;
    top:381px;
    width:955px;
    height:52px;
    z-index:2;
    font-style:normal;
    color:#3366FF;
}
.Estilo1 {
    font-size: 14px;
    font-weight: Tahoma;
}
#Layer3 {
    position:absolute;
    left:14px;
    top:311px;
    width:957px;
    height:58px;
    z-index:3;
    font-style:normal;
    color:#CC0000;
    
}

</style>

<?php $xajax->printJavascript($XAJAX_DIR?>
</head>
    <script language="Javascript">
    function limpiar()    {
                            f = document.getElementById("archivo1");
                            nuevoFile = document.createElement("input");
                            nuevoFile.id = f.id;
                            nuevoFile.type = "file";
                            nuevoFile.name = "archivo1";
                            nuevoFile.value = "";
                            nuevoFile.size=f.size;
                            nuevoFile.onchange = f.onchange;
                            nodoPadre = f.parentNode;
                            nodoSiguiente = f.nextSibling;
                            nodoPadre.removeChild(f);
                            (nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile):
                                nodoPadre.insertBefore(nuevoFile, nodoSiguiente);
                                
                            f = document.getElementById("archivo2");
                            nuevoFile = document.createElement("input");
                            nuevoFile.id = f.id;
                            nuevoFile.type = "file";
                            nuevoFile.name = "archivo2";
                            nuevoFile.value = "";
                            nuevoFile.size=f.size;
                            nuevoFile.onchange = f.onchange;
                            nodoPadre = f.parentNode;
                            nodoSiguiente = f.nextSibling;
                            nodoPadre.removeChild(f);
                            (nodoSiguiente == null) ? nodoPadre.appendChild(nuevoFile):
                                nodoPadre.insertBefore(nuevoFile, nodoSiguiente);
                        }
     
    function redireccion(){
         document.location='iu_insertarPisos.php' ;    
     } 
</script>

<body>
<form id="formulario" name="formulario" method="POST" enctype="multipart/form-data">
<div id="Layer1">
<p class="Estilo1"><strong>Las imagenes se deben adjuntar por parejas </strong></p>

<p><strong><span class='Estilo1'>La referencia del inmueble introducido es <?php echo $ident?></span></strong></p>
<p><strong><span class='Estilo1'>Inserta el nombre de la imagen en tamaño normal</span></strong></p>
<input name="archivo1" type="file" id="archivo1" size="100"/>
<p><strong><span class='Estilo1'>Inserta el nombre de la imagen en tamaño miniatura</span></strong></p>
<input name="archivo2" type="file" id="archivo2" size="100"/><br/><br/>
<input type="button" value="Subir archivos" onclick="xajax_getProcesar_formulario(xajax.getFormValues('formulario'))"/>
<input type="button" value="Terminar" onclick="redireccion()"/>

</div>
<div id="Layer2"></div>
<div id="Layer3"></div>
</form>
</body>
</html>
  #11 (permalink)  
Antiguo 21/08/2007, 15:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

No veo en que parte del codigo es donde asignas la ruta a las imagenes, creo ahi es donde radica tu error.

Saludos.
  #12 (permalink)  
Antiguo 22/08/2007, 04:19
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Las rutas se cogen directamente desde la caja de texto. Hay dos cajas de texto cada una con un botón examinar al lado. De ahí es de donde coje la ruta completa del archivo de mi ordenador. De hecho la coge bien, ya que en los echo me los imprime bien.

El problema tiene que ser algo más sutil. Mi servidor no permite archivos temporales.
Igual la ruta la intenta coger como si fuese del servidor, y como el servidor no tiene C:/lalala.... no puede coger nada. Igual le hace falta la IP o algo del ordenador que quiere subir archivos???

No se... En el código no puede haber muchos errores porque sino no subiría de local al servidor. Los errores se verían ahí,no?

gracias por vuestra ayuda!
  #13 (permalink)  
Antiguo 22/08/2007, 09:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Ya entendi, tu problema es mas de concepto de como trabaja PHP, mas que de codigo, tu estas pasando la ruta con los cuadros de examinar PERO, cuando tu programa esta en tu PC para PHP la ruta C:/alalala si existe porque esta dentro del filesystem que PHP conoce.

Una vez que tu lo subes a tu pagina web la ruta C:/lalala ya no existe porque no esta en el servidor y por ende NO puede leerla, y jamas va a subir el archivo.

Dejame decirte que no hay forma de que puedas lograr hacer lo que pides a menos que subas el archivo y en lugar de usar la ruta C:/lalal uses el $_FILES['archivo']['tmp_name'] esa ruta si la puede leer PHP ya que esta en el filesystem local para PHP.

Saludos.
  #14 (permalink)  
Antiguo 22/08/2007, 09:15
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Gracias GatorV!

Una pregunta: para usar $_FILES['archivo']['tmp_name'] hace falta usar archivos temporales? es que me parece que el servidor no admite arcivos temporales...

Ya probaré de todas formas.

Muchas gracias de nuevo!!

saludos!
  #15 (permalink)  
Antiguo 22/08/2007, 09:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Asi es, en tu formulario debes de usar tambien un metodo POST con el encoding type de multipart/form-data para que el formulario te envie el archivo y lo recibas desde PHP en tu array $_FILES.

Saludos.
  #16 (permalink)  
Antiguo 22/08/2007, 10:04
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Estoy intentando que funcione copiando código de una web. No da ningun tipo de error, pero tampoco sube nada. Puede deberse a que en el servidor no hay ninguna carpeta /tmp/... ?? se supone que se crean y se destruyen solas estas carpetas temporales? o esque no está habilitado el servidor para usarlas?

pfffff
que difícil es esto!!!
  #17 (permalink)  
Antiguo 22/08/2007, 10:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Que codigo estas usando, un ejemplo sencillo es este:

formulario.php
Código PHP:
<form action="subir.php" method="post" enctype="multipart/form-data" name="subirarchivo">
<
input type="file" name="archivo" />
<
input type="submit" name="enviar" value="Enviar Archivo" /> 
subir.php:
Código PHP:
$archivo $_FILES['archivo'];
if( 
$archivo['error'] == UPLOAD_ERR_OK ) {
     if( 
is_uploaded_file$archivo['tmp_name'] ) ) {
            echo 
sprintf"Archivo %s subido exitosamente!!"$archivo['name'] );
     } else {
            echo 
"Error al subir archivo: " print_r$archivotrue );
     }
} else {
     echo 
"Error de archivo: " $archivo['error'];

Saludos.
  #18 (permalink)  
Antiguo 22/08/2007, 10:30
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Estoy usando esto:

Código PHP:
<?php
    
// Primero creamos un ID de conexión a nuestro servidor
    
$cid ftp_connect("www.midominio.com");
    
// Luego creamos un login al mismo con nuestro usuario y contraseña
    
$resultado ftp_login($cid"miusuario","micontraseña");
    
// Comprobamos que se creo el Id de conexión y se pudo hacer el login
    
if ((!$cid) || (!$resultado)) {
        echo 
"Fallo en la conexión"; die;
    } else {
        echo 
"Conectado.";
    }
    
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
    //servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
    
ftp_pasv ($cidtrue) ;
    echo 
"<br> Cambio a modo pasivo<br />";
    
// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
    // esta por demás decir que este paso no es necesario. En mi caso uso un directorio llamado boca
    
ftp_chdir($cid"/httpdocs/fotos");
    echo 
"Cambiado al directorio necesario";   
    
// Tomamos el nombre del archivo a transmitir, pero en lugar de usar $_POST, usamos $_FILES que le indica a PHP
    // Que estamos transmitiendo un archivo, esto es en realidad un matriz, el segundo argumento de la matriz, indica
    // el nombre del archivo
    
$local $_FILES["archivo"]["name"];
    
// Este es el nombre temporal del archivo mientras dura la transmisión
    
$remoto $_FILES["archivo"]["tmp_name"];
    
// El tamaño del archivo
    
$tama $_FILES["archivo"]["size"];echo $tama;
    echo 
"<br />$local<br />";
    echo 
"$remoto<br />";
    echo 
"subiendo el archivo...<br />";
    
// Juntamos la ruta del servidor con el nombre real del archivo
    
$ruta "/httpdocs/fotos/".$local; echo filesize($remoto);
    
// Verificamos si no hemos excedido el tamaño del archivo
    
if ($tama>$_POST["MAX_FILE_SIZE"]){
        echo 
"Excede el tamaño del archivo...<br />";
    } else {
        
// Verificamos si ya se subio el archivo temporal
        
if (is_uploaded_file($remoto)){echo "is uploaded";echo filetype($remoto);
            
// copiamos el archivo temporal, del directorio de temporales de nuestro servidor a la ruta que creamos
            
copy($remoto$ruta);        
        }
        
// Sino se pudo subir el temporal
        
else {
            echo 
"no se pudo subir el archivo " $local;
        }
    }
    echo 
"Ruta: " $ruta;
    
//cerramos la conexión FTP
    
ftp_close($cid);
?>
  #19 (permalink)  
Antiguo 22/08/2007, 10:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Prueba el codigo que te pongo, con eso podras saber si tu servidor puede subir archivos.

Saludos.
  #20 (permalink)  
Antiguo 22/08/2007, 10:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Pues lo he probado tal cual lo has puesto (añadiendole la parte de la conexión y cambio de directorio, por supuesto) y no da error pero no sube nada tampoco.

Todos los diferentes trozos de código que he probado hacen igual, no dan error, conectan bien y dicen que ha subido el archivo bien, pero luego vas a la carpeta y ahí no ha subido nada!!!

saludos
  #21 (permalink)  
Antiguo 22/08/2007, 10:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

El archivo que te puse no debe de subir nada, solo comprueba si la imagen se subio correctamente, necesitarias agregar el move_uploaded_file despues de is_uploaded_file para que lo mueva a una carpeta.

Saludos.
  #22 (permalink)  
Antiguo 22/08/2007, 10:58
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

si si, ya lo hice. He hecho

copy($archivo['tmp_name'], "/httpdocs/fotos/".$archivo['name']);

pero nada....
  #23 (permalink)  
Antiguo 22/08/2007, 11:10
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

He preguntado a los encargados de *******, que es donde está la web alojada y me han respondido lo siguiente:

Cita:
Nuestros servidores permiten el acceso a la partición /tmp para almacenar archivos de manera temporal.
así que ya no sé donde está el problema, no me lo explico!! Además, he puesto un echo para que me diga la ruta del archivo temporal y me las imprime bien, por ejemplo /tmp/phppNwTna y cada vez cambia.

no me lo explico de verdad... no me lo explico!!!
  #24 (permalink)  
Antiguo 22/08/2007, 11:30
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

En lugar de copy usa move_uploaded_file. Adicionalmente ya checaste que la carpeta fotos tenga los permisos necesarios para que PHP pueda escribir en ese directorio?

Saludos.
  #25 (permalink)  
Antiguo 22/08/2007, 12:00
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

los permisos están bien. los he puesto en 777 en la carpeta fotos.

También he probado con el

Código PHP:
move_uploaded_file($archivo['tmp_name'], $archivo['name']); 
pero no hay manera...
  #26 (permalink)  
Antiguo 22/08/2007, 12:36
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Código PHP:
move_uploaded_file($archivo['tmp_name'], $archivo['name']); 
Te falta en la segunda parte el path al archivo, algo asi:
Código PHP:
$path getcwd() . '/imagenes/fotos/';
if( 
move_uploaded_file($archivo['tmp_name'], $path $archivo['name']) ) {
     echo 
"Archivo subido exitosamente!";
} else {
     echo 
"Error al subir el archivo";

Saludos.
  #27 (permalink)  
Antiguo 22/08/2007, 12:45
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

Mira, lo tengo así:

Código PHP:
<?php
$cid 
ftp_connect("ftp.midominio.com");
    
// Luego creamos un login al mismo con nuestro usuario y contraseña
    
$resultado ftp_login($cid"usuario","contraseña");
    
// Comprobamos que se creo el Id de conexión y se pudo hacer el login
    
if ((!$cid) || (!$resultado)) {
        echo 
"Fallo en la conexión"; die;
    } else {
        echo 
"Conectado.";
    }
    
// Cambiamos a modo pasivo, esto es importante porque, de esta manera le decimos al 
    //servidor que seremos nosotros quienes comenzaremos la transmisión de datos.
    
ftp_pasv ($cidtrue) ;
    echo 
"<br> Cambio a modo pasivo<br />";
    
// Nos cambiamos al directorio, donde queremos subir los archivos, si se van a subir a la raíz
    // esta por demás decir que este paso no es necesario. En mi caso uso un directorio llamado boca
    
ftp_chdir($cid"/httpdocs/fotos/");echo ftp_pwd($cid);
    echo 
"Cambiado al directorio necesario";   
    
$archivo $_FILES['archivo'];
if( 
$archivo['error'] == UPLOAD_ERR_OK ) {
    
     if( 
is_uploaded_file$archivo['tmp_name'] ) ) { echo $archivo['tmp_name'];
         
$path getcwd() . '/httpdocs/fotos/';
         
move_uploaded_file($archivo['tmp_name'], $path $archivo['name']) ;    
            echo 
sprintf"Archivo %s subido exitosamente!!"$archivo['name'] );
     } else {
            echo 
"Error al subir archivo: " print_r$archivotrue );
     }
} else {
     echo 
"Error de archivo: " $archivo['error'];
}  

?>
y no hay manera , ya no sé qué más probar....
  #28 (permalink)  
Antiguo 22/08/2007, 12:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Porque no pruebas en un archivo independiente? Quita todo lo del ftp y solo prueba el codigo como te digo.

Saludos.
  #29 (permalink)  
Antiguo 22/08/2007, 13:15
 
Fecha de Ingreso: febrero-2006
Mensajes: 174
Antigüedad: 13 años, 9 meses
Puntos: 0
Re: problemas para subir mediante FTP

si te refieres a que pruebe el trocito de código que me has dicho antes

Código PHP:
$archivo $_FILES['archivo'];
if( 
$archivo['error'] == UPLOAD_ERR_OK ) {
     if( 
is_uploaded_file$archivo['tmp_name'] ) ) {
            echo 
sprintf"Archivo %s subido exitosamente!!"$archivo['name'] );
     } else {
            echo 
"Error al subir archivo: " print_r$archivotrue );
     }
} else {
     echo 
"Error de archivo: " $archivo['error'];

sin nada de conectarme mediante ftp y tal, ya lo he hecho. y no hacía nada. Pero esque tampoco sé qué es lo que tiene que hacer, si no le estoy diciendo a qué se tiene que conectar, ni a dónde subir las cosas... no lo entiendo muy bien...

saludos!
  #30 (permalink)  
Antiguo 22/08/2007, 13:26
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Re: problemas para subir mediante FTP

Solo agrega la linea para copiar el archivo:
Código PHP:
$archivo $_FILES['archivo'];
if( 
$archivo['error'] == UPLOAD_ERR_OK ) {
     if( 
is_uploaded_file$archivo['tmp_name'] ) ) {
            
$path "/path/a/tu/dir/de/fotos/";
            if( 
move_uploaded_file$archivo['tmp_name'], $path $archivo['name'] ) ) {
            echo 
sprintf"Archivo %s subido exitosamente!!"$archivo['name'] );
            } else {
                    echo 
"Fallo al copiar el archivo" print_r$archivotrue );
            }
     } else {
            echo 
"Error al subir archivo: " print_r$archivotrue );
     }
} else {
     echo 
"Error de archivo: " $archivo['error'];

Tienes que reemplazar $path por la ruta completa a tu carpeta de fotos. con eso deberias de poder subir el archivo desde el formulario que te puse mas arriba a la carpeta que tu indiques.

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 22:41.