Foros del Web » Programando para Internet » PHP »

Escribir archivo, pero como en este caso??

Estas en el tema de Escribir archivo, pero como en este caso?? en el foro de PHP en Foros del Web. Hola amigos del foro. Tengo un problema que por mas que le doy vueltas soy imposble de resolver. Se trata de lo siguiente: Lo que ...
  #1 (permalink)  
Antiguo 19/05/2003, 17:20
 
Fecha de Ingreso: enero-2002
Mensajes: 15
Antigüedad: 22 años, 10 meses
Puntos: 0
Pregunta Escribir archivo, pero como en este caso??

Hola amigos del foro.

Tengo un problema que por mas que le doy vueltas soy imposble de resolver. Se trata de lo siguiente: Lo que intento hacer es guardar una imagen que esta en un servidor al mio. No se si el metodo que estoy haciendo es el correcto, espero que me ayuden.

$imagen= "http://www.forosdelweb.com/images/smilies/biggrin.gif";
$fp = fopen("/path/imagenes/nombre_archivo.gif", "a");
flock($fp,2);
$fw = fwrite($fp, $imagen);
fclose($fp);

A ver si me pueden decir en que falla, puesto que no me guarda la imagen, si veo el archivo que ha generado lo unico que hay dentro es lo que ocupa la imagen ?¿?

Si saben de otra forma, estaria agradecido.

Muchas gracias.....
  #2 (permalink)  
Antiguo 19/05/2003, 19:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El código que has puesto .. lo que hace es crear y escribir en ese archivo nombre_archivo.gif el texto:
http://www.forosdelweb.com/images/smilies/biggrin.gif

Te explico:

Debes abrir el archivo origen (el remoto) en modo lectura ("r" o "rb" (binario) en fopen() ..) Luego, leer el archivo en sí (via fread() por ejemplo) .. Todo esto lo guardas en una variable que será la que escribiras en tu archivo destino que es en tu servidor .. Para esto abres otro archivo, el destino en modo escritura ("w" por ejemplo para que se cree el archivo y se quede abierto para escribir en el ..) .. a continuación con fwrite() escribes la variable que has obtenido de tu fread() del archivo origen ... Cieras las "dos" conexiones que has hecho al archivo origen y destino.

Pero .. muchooo mas facil si dispones de PHP 4.3.0 en adelante:
Código PHP:
copy("http://www.forosdelweb.com/images/smilies/biggrin.gif","nombre_imagen.gif"); 
Desde esta versión de PHP, copy() acepta un URL como origen para un archivo. A todo esto, por supuesto que tengas activado los "wrappers" para que puedas hacer llamadas a archivos de forma remota via su URL ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 20/05/2003, 12:04
 
Fecha de Ingreso: enero-2002
Mensajes: 15
Antigüedad: 22 años, 10 meses
Puntos: 0
Gracias Cluster como siempre ayudando a los mas necesitados ;)
Habia probado lo de copy, pero no se porque no salia, probare mas a fondo :D

Un saludo

-------------------------


Bueno, he probado lo que me has dicho, y no puedo hacerlo con el copy() puesto que esta instalada la version 4.2.2 de PHP en el server por lo que he intentado hacer lo que me has dicho antes.

Tengo lo siguiente:
$imagen = "http://www.forosdelweb.com/images/smilies/biggrin.gif";

$fd = fopen($imagen, "r");
$contents = fread ($fd, filesize ($imagen));

$fp = fopen("$path/images/elinks/1.gif", "w");
$fw = fwrite($fp, $contents);

fclose($fp);
fclose($fd);

y sigue sin funcionar a medias, porque si la variable $imagen es una imagen en el mismo server en modo local si funciona, pero si es una imagen puesta en otro server no va . Alguna idea de como hacerlo con una imagen que no este en mi server?

Muchas gracias amigos

Última edición por preto; 20/05/2003 a las 12:43
  #4 (permalink)  
Antiguo 20/05/2003, 20:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Si dices que no te funciona .. supongo que algun error que mencione los "Wrappers" debe de avisarte que no están habilitados en ese servidor para hacer llamadas a archivos via http:// o ftp:// ... etc. Osese, Remotas.

Fijate en lo que dice el manual de PHP (y revisa la configuración de tu php.ini o phpinfo() del servidor que no te funciona ..). En concreto .. la directiva que lo define es:

allow_url_fopen

Si está a 1 (ON).. podras hacer llamadas a archivos Externos via http:// .... Si está a 0 ya te lo puedes imaginar ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 21:47.