Foros del Web » Programando para Internet » PHP »

problema con copy

Estas en el tema de problema con copy en el foro de PHP en Foros del Web. Hola, Tengo el siguiente script Código PHP: function  subirFoto ( $foto_p , $foto_tmp ){     if( copy ( $foto_tmp ,  "fotos/$foto_p" ) or die( mysql_error ())){         echo  "subio" ...
  #1 (permalink)  
Antiguo 07/04/2005, 04:43
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 2 meses
Puntos: 4
Pregunta problema con copy

Hola,
Tengo el siguiente script
Código PHP:
function subirFoto($foto_p,$foto_tmp){
    if(
copy($foto_tmp"fotos/$foto_p") or die(mysql_error())){
        echo 
"subio";
    }
}

$foto_p=$HTTP_POST_FILES['foto_p']['name'];
$foto_tmp=$HTTP_POST_FILES['foto_p']['tmp_name'];
subirFoto($foto_p,$foto_tmp); 
Pero me da un error: Warning: copy(/tmp/phpdvezX8): failed to open stream: No such file or directory in (aqui es la ruta al directorio de este script)

Alguien puede decir que hago mal? El diretorio fotos tiene permisos 777 y ya me asegure que las variables $HTTP_POST_FILES tienen contenido cuando tiene que ejecutarse la funcion.

Gracias.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #2 (permalink)  
Antiguo 07/04/2005, 07:32
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
Mira, yo intentaria hacer eso mismo fuera de una funcion, o sea, en el mismo proceso en el que lees el file.
Que es eso de mysql_error() en el or die del copy?

Si lo queres hacer como función, seguramente debas pasar dicho parametro de otra manera, primero proba si te funciona el subirlo de manera común.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 07/04/2005, 07:40
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 2 meses
Puntos: 4
Si lo saco fuero de la funcion funciona bien. Esta salucionado por tanto . Pero me queda la duda com se podria hacer dentro de una funcion.

Gracias.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
  #4 (permalink)  
Antiguo 07/04/2005, 07:44
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 20 años
Puntos: 34
No estoy seguro, pero intenta con esto:

function subirFoto(&$foto_p,&$foto_tmp){
if(copy($foto_tmp, "fotos/$foto_p") or die(mysql_error())){
echo "subio";
}
}

subirFoto($HTTP_POST_FILES['foto_p']['name'],$HTTP_POST_FILES['foto_p']['tmp_name']);
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 07/04/2005, 09:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si creas una función ... . lo ideal sería que esta devuelva un "true" o false si se consiguió ejecutar ..

Código PHP:
function moverFoto($foto_p,$foto_tmp){ 
    if(
move_uploaded_file($foto_tmp"./fotos/".$foto_p)){ 
       return 
TRUE
    } else {
        return 
FLASE;
    }


if (
moverFoto($_FILES['foto_p']['name'],$_FILES['foto_p']['tmp_name'])){
  echo 
"subió la imagen ..";
} else {
   echo 
"no subió";

Por lo demás .. la imagen o archivo no se se "sube" por esa función .. para cuando la quieres usar el archivo en sí ya está en el servidor .. Es HTML y su campo file por HTTP el que literalmente "sube" el archivo .. Una vez en el servidor .. se mueve desde donde PHP por HTTP los deja temporalemnte (upload_tmp_dir ruta y nombre temporal que le dá) hacia donde lo necesites .. El uso de move_uploaded_file() te evitará problemas con configuraciones de PHP tipo "safe_mode" y similares restricciones.

Un saludo,
  #6 (permalink)  
Antiguo 07/04/2005, 12:35
Avatar de elangelcaido  
Fecha de Ingreso: septiembre-2003
Ubicación: Oviedo
Mensajes: 1.068
Antigüedad: 21 años, 2 meses
Puntos: 4
Voy a probar lo que me comentais y os cuento.

Una vez mas gracias por la ayuda que se aporta en estos foros.
__________________
Ta Luego! Al final sólo puede quedar uno...
________
lukos.org
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 14:06.