PHP - copiar dos archivos

 
Vista:

copiar dos archivos

Publicado por alejandro (36 intervenciones) el 03/09/2003 19:39:22
Tengo problemas para copiar el contenido de un archivo en otro. Los archivos los ingreso desde un formulario htm (input origen e input destino) y son archivos que existen en el directorio donde tengo mis archivos php, por eso solo ingreso los respectivos nombres en los input.

El codigo que uso es el sig.:

<?
#Abro el archivo origen en modo lectura
fopen($origen,\"r\");

#Abro el archivo destino en modo append
fopen($destino,\"a+\");

#Hasta que no sea fin de archivo
while(!feof($origen))
{
#Capturo 4096 caracteres dentro de la línea, o menos si hay un retorno de carro antes
$buffer = fgets($origen,4096);
fwrite($destino,$buffer);
}

fclose($origen);
fclose($destino);
?>

Y el error que me tira el browser es el sig.:

Warning: feof(): supplied argument is not a valid File-Handle resource in /home/jubi/htdocs/inicio/ddjj/anexarArchivo.php on line 9

Warning: fgets(): supplied argument is not a valid File-Handle resource in /home/jubi/htdocs/inicio/ddjj/anexarArchivo.php on line 12

Warning: feof(): supplied argument is not a valid File-Handle resource in /home/jubi/htdocs/inicio/ddjj/anexarArchivo.php on line 9

Warning: fgets(): supplied argument is not a valid File-Handle resource in /home/jubi/htdocs/inicio/ddjj/anexarArchivo.php on line 12

muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:copiar dos archivos

Publicado por Sito (122 intervenciones) el 04/09/2003 09:52:12
Lo que en tu código se denomina $origen y $destino son las rutas de cada archivo. Efectivamente, éste es el primer argumento que debes pasar a la función fopen. Lo que ocurre es fopen devuelve un 'apuntador' al fichero que es el que utilizarás en las operaciones posteriores, así como en fclose. Por ejemplo:

$ruta='miarchivo.txt';
$MiArchivo=fopen($ruta,'w');
fwrite($MiArchivo,'HOLA');
fclose($MiArchivo);

Como verás, en fwrite y fclose se pasa el argumento 'MiArchivo' y no 'ruta'.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:copiar dos archivos

Publicado por alejandro (36 intervenciones) el 04/09/2003 16:35:10
Muchas gracias. Me anduvo, pero solo teniendo los archivos origen y destino en el mismo directorio. Ahora yo le pongo como destino un archivo que se encuentra en otro directorio y no anda.
Asi que si me podes ayudar con eso, muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:copiar dos archivos

Publicado por Sito (122 intervenciones) el 05/09/2003 11:01:52
La función fopen puede abrir un archivo en distintas ubicaciones tanto con HTTP como FTP o el sistema de archivos del servidor. Este último caso es el que nos interesa. He creado un sencillo ejemplo. Supongamos que tenemos nuestro script PHP en una carpeta que a su vez contiene otra carpeta llamada 'Subcarpeta'. Queremos abrir un nuevo archivo allí('prueba.txt') con nuestro script. Pues bien:

<?php
$nombreArchivo=realpath("Subcarpeta");
$nombreArchivo.="/prueba.txt";
$fp=fopen($nombreArchivo,"w");
fwrite($fp,"HOLA");
fclose($fp);
?>

La función realpath() devuelve la ruta real en el servidor de una ubicación. Si 'Subcarpeta' fuera la que contiene a la carpeta del script, deberíamos haber especificado:

$nombreArchivo=realpath("../Subcarpeta");

Espero haberte ayudado, un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar