En este artículo mostraré con un ejemplo muy sencillo cómo copiar un fichero desde un sitio hacia otro, es decir, tenemos un fichero en una dirección http://sitio_externo/path/file.ext y queremos compartirlo en nuestro sitio http://mi_sitio/downloads/file.ext, o sencillamente queremos copiarlo hacia nuestro sitio servidor no se desee publicar.
Partimos de que el código PHP se ejecuta en nuestro sitio “mi_sitio”, por lo que tendríamos que descargar el fichero desde la web externa y copiarlo hacia la carpeta downloads en la raíz de nuestro sitio.
Para esto no copiaremos el fichero completamente, sino que utilizaremos las funciones de PHP de trabajo con ficheros (abrir ficheros, crear ficheros, copiar con fwrite…). Veamos el siguiente código:
1: //capturar fuente por input o por cualquier vía, ejemplo http://sitio_externo/path/file.ext
2: $http_path = …;
3:
4: //carpeta destino en nuestro servidor
5: $upload_path = './downloads/';
6:
7: //estableciendo un timeout límite para copiar
8: set_time_limit (24 * 60 * 60);
9:
10: //fichero destino incluyendo el path
11: $newfname = $upload_path.basename($http_path);
12:
13: //si se puede abrir el fichero fuente en modo lectura, se copia el contenido al fichero destino en modo escritura, por pedazos
14: $source_file = fopen ($http_path, "rb");
15: if ($file)
16: {
17: $target_file = fopen ($newfname, "wb");
18:
19: if ($target_file)
20: {
21: while(!feof($source_file))
22: fwrite($target_file, fread($file, 1024 * 8 ), 1024 * 8 );
23: }
24: }
25:
26: if ($source_file) fclose($source_file);
27: if ($target_file) fclose($target_file);
Espero sea de utilidad este artículo.