Foros del Web » Programando para Internet » PHP »

Descarga de fichero por ruta especifica

Estas en el tema de Descarga de fichero por ruta especifica en el foro de PHP en Foros del Web. Hola a todos, soy nuevo en este foro. Tengo un problemita que explicare: Tengo un formulario que genera un archivo KML, que son los que ...
  #1 (permalink)  
Antiguo 15/03/2012, 07:34
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años, 1 mes
Puntos: 0
Descarga de fichero por ruta especifica

Hola a todos, soy nuevo en este foro.
Tengo un problemita que explicare:

Tengo un formulario que genera un archivo KML, que son los que usan en google earth, todo funciona bien al generar este archivo, pero me lo hace de la siguiente forma, cuando en el formulario le pongo latitud y longitud y genero, me sale la opcion de abrir el archivo, guardar como o cancelar, y necesito que esa opcion no aparesca, es decir, que cuando genere el archivo, me lo guarde automaticamente en alguna ruta especificada y me reemplaze el archivo antiguo que esta almacenado, sin que me aparesca la opcion de yo guardarlo manualmente.

Adjunto Codigo:
Formulario HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
<title>Mapa de Google</title>



</head>

<body>
<form method= post ACTION = "generakml.php">

<div id="formulario" style="margin: 10px">

Longitud X: <input type="text" name="long" value="" />
<br />
Latitud Y: <input type="text" name="lat" value="" />
<input type=submit />
</form>

<br />
<br />

</body>
</html>

PHP genera KML:
<?php
//require('phpsqlajax_dbinfo.php');
// Creates an array of strings to hold the lines of the KML file.

$kml = array('<?xml version="1.0" encoding="UTF-8"?>');
$kml[] = '<kml xmlns="http://earth.google.com/kml/2.1">';
$kml[] = ' <Document>';
$kml[] = ' <LookAt>';
$kml[] = ' <longitude>' . $_POST['long'] . '</longitude>';
$kml[] = ' <latitude>' . $_POST['lat'] . '</latitude>';
// $kml[] = ' <longitude>' .-73.680 . '</longitude>';
// $kml[] = ' <latitude>' . -35.058 . '</latitude>';
$kml[] = '<range>' . 1000000 . '</range>';
$kml[] = ' <tilt>' . 0 . '</tilt>';
$kml[] = ' <heading>' . 0 .'</heading>';
$kml[] = ' <altitudeMode>' .clampToGround. '</altitudeMode>';
// $kml[] = ' <coordinates>' . $_POST['long'] . ',' . $_POST['lat'] . '</coordinates>';

/// End XML file
$kml[] = ' </LookAt>';
$kml[] = ' </Document>';
$kml[] = '</kml>';
$kmlOutput = join("\n", $kml);
header('Content-type: application/vnd.google-earth.kml+xml');
echo $kmlOutput;
?>


Estare atento a cualquier cosa

Saludos cordiales.
  #2 (permalink)  
Antiguo 15/03/2012, 08:14
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Descarga de fichero por ruta especifica

lamentablemente no se puede hacer lo que pretendes porque eso supondría que tengas acceso al sistema de archivos del cliente, lo cual ni JavaScript tiene.

para ello necesitas de un plugin adicional como adobe flash o applets de java, si es que los mismos permite ello, y si lo hacen le solicitarán permisos al usuario para tal operación
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 15/03/2012, 08:28
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Descarga de fichero por ruta especifica

Pero es una aplicacion local, no sale de internet es solo para generarlo en mi PC.
Existira algun metodo para hacerlo mediante Tareas programadas o algo?
  #4 (permalink)  
Antiguo 15/03/2012, 08:34
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Descarga de fichero por ruta especifica

ahh, entonces si es el caso guarda directamente en el directorio que quieras (asegúrate que tenga permisos de escritura), con fopen puedes crear el archivo y olvídate del header y el echo del final
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 15/03/2012, 09:17
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Descarga de fichero por ruta especifica

Ok Gracias pero me puedes dar alguna pista...ya que estoy usando el fopen y me da errores, no se muy bien como poder definir la ruta y que lo guarde este es el codigo que le agregue:
$archivo = "C:\Marco\descarga\generakml.kml";
$fp = fopen($archivo, "r");
$contents = fread($fp, filesize($archivo));
fclose($fp);

//header('Content-type: application/vnd.google-earth.kml+xml');
//echo $kmlOutput;
?>

Atento a tu respuesta
  #6 (permalink)  
Antiguo 15/03/2012, 10:37
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Descarga de fichero por ruta especifica

si lo abres en modo de sólo lectura "r" no lo podrás hacer, consulte la documentación de fopen
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #7 (permalink)  
Antiguo 15/03/2012, 12:18
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Descarga de fichero por ruta especifica

Hola, gracias por tu respuesta, he podido generar el archivo KML, pero me sale vacio, y la verdad ya no se como llenarlo con la informacion que trato llenarle, adjunto el codigo para ver si me puedes ayudar.

<?php
//require('phpsqlajax_dbinfo.php');
// Creates an array of strings to hold the lines of the KML file.

$kml = array('<?xml version="1.0" encoding="UTF-8"?>');
$kml[] = '<kml xmlns="http://earth.google.com/kml/2.1">';
$kml[] = ' <Document>';
$kml[] = ' <LookAt>';
// $kml[] = ' <Point>';
$kml[] = ' <longitude>' . $_POST['long'] . '</longitude>';
$kml[] = ' <latitude>' . $_POST['lat'] . '</latitude>';
// $kml[] = ' <Point>';
// $kml[] = ' <longitude>' .-73.680 . '</longitude>';
// $kml[] = ' <latitude>' . -35.058 . '</latitude>';
$kml[] = '<range>' . 1000000 . '</range>';
$kml[] = ' <tilt>' . 0 . '</tilt>';
$kml[] = ' <heading>' . 0 .'</heading>';
$kml[] = ' <altitudeMode>' .clampToGround. '</altitudeMode>';
// $kml[] = ' <coordinates>' . $_POST['long'] . ',' . $_POST['lat'] . '</coordinates>';

/// End XML file
$kml[] = ' </LookAt>';
$kml[] = ' </Document>';
$kml[] = '</kml>';
$kmlOutput = join("\n", $kml);
//$archivo = $kmlOutput;
chmod("C:\Marco\descarga", 0777);


$archivo = 'C:\Marco\descarga\generakml.kml';

$fp = fopen($archivo, "w+");
//$contents = fread($fp, filesize($archivo)); //esta linea la comente porque me daba error Warning: fread() [function.fread]: Length parameter must be greater than 0
fclose($fp);

//header('Content-type: application/vnd.google-earth.kml+xml');
//echo $kmlOutput;
?>

Atentoa tu respuesta
  #8 (permalink)  
Antiguo 15/03/2012, 12:37
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Descarga de fichero por ruta especifica

¿y como esperas que el archivo tenga datos si en ningún memento escribes en él?, francamente no ha consultado la documentación como debería, es cuestión de lógica:

$fp = fopen($archivo, "w+"); //abro el archivo en modo escritura
//¿¿¿¿ dónde lo escribes ???? http://www.php.net/manual/es/function.fwrite.php
fclose($fp); //cierro el archivo

y la línea que te da error no es obvia "fread"
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #9 (permalink)  
Antiguo 15/03/2012, 12:40
 
Fecha de Ingreso: marzo-2012
Mensajes: 5
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Descarga de fichero por ruta especifica

Si ya lo logre...hace un momento lo encotnre y lo pude generar sin problemas...muchas gracias y pido mque se cierre el tema!!!
Graciaaaaaaaaaaaaaaaaas!

Etiquetas: kml
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 05:45.