Foros del Web » Programando para Internet » PHP »

forzar descarga y decodificar archivo

Estas en el tema de forzar descarga y decodificar archivo en el foro de PHP en Foros del Web. Foreros , Tengo el siguiente problema , espero puedan ayudarme necesito descargar y decodificar imagenes , con el codigo que tengo echo las puedo descargar ...
  #1 (permalink)  
Antiguo 16/08/2011, 08:14
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
forzar descarga y decodificar archivo

Foreros ,

Tengo el siguiente problema , espero puedan ayudarme necesito descargar y decodificar imagenes , con el codigo que tengo echo las puedo descargar pero debo añadirles manualmente la extension para visualizar la imagen , espero me puedan ayudar .

mi codigo es el siguiente

Código PHP:
Ver original
  1. <?php
  2.    
  3.     $f = $_GET["f"];
  4.     header('Content-Description: File Transfer');
  5.     header("Content-type: application/octet-stream");
  6.     header('Content-Disposition: attachment; filename="' . rawurldecode($f) . '"');
  7.     //header("Content-Disposition: attachment; filename=\"$f\"\n");
  8.     header('Content-Transfer-Encoding: binary');
  9.     header('Expires: 0');
  10.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11.     header('Pragma: public');
  12.     header('Content-Length: ' . filesize($f));
  13.     $fp=fopen("$f", "r");
  14.     fpassthru($fp);
  15. ?>

un ejemplo de como esta codificada una imagen ej: 2d6i3csncyfgz5y y tengo que añadirle la extension 2d6i3csncyfgz5y.jpg para que se vea , espero haber sido claro en mi explicacion .

Saludos
  #2 (permalink)  
Antiguo 16/08/2011, 08:22
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: forzar descarga y decodificar archivo

No drama amiguito, solo tenes que conocer los datos de la imagen
echo '<pre>'; print_r(getimagesize($my_image)); echo '</pre>';
echo '<pre>'; print_r(pathinfo($my_image)); echo '</pre>';

$partes_ruta = pathinfo("/www/htdocs/$my_image");
echo $partes_ruta['extension'];

http://php.net/manual/es/function.pathinfo.php
  #3 (permalink)  
Antiguo 16/08/2011, 08:22
 
Fecha de Ingreso: agosto-2011
Mensajes: 11
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: forzar descarga y decodificar archivo

Um... hay un monton de cosas en ese código que aún desconozco >_< pero podrias convetir la URL en string, guardándola en otra variable, y agregarle la extensión dependiendo del tipo de imagen.
  #4 (permalink)  
Antiguo 16/08/2011, 09:21
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: forzar descarga y decodificar archivo

Gracias por responder a mi pregunta , pero como podria concatenar el valor de la extension a mi codigo porque el ej que me diste me mostro la extension del archivo .

Código PHP:
Ver original
  1. <?php
  2. $f=$_GET['f'];
  3. $partes_ruta = pathinfo("/upload/surveys/46443/files/$f");
  4. //echo $partes_ruta['extension'];
  5.     header('Content-Description: File Transfer');
  6.     header("Content-type: application/octet-stream");
  7.     header("Content-Disposition: attachment; filename=\"$f\"\n");
  8.     header('Content-Transfer-Encoding: binary');
  9.     header('Expires: 0');
  10.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11.     header('Pragma: public');
  12.     $fp=fopen("$f","".$partes_ruta['extension']."", "r");
  13.     fpassthru($fp);
  14. ?>

saludos y gracias por su tiempo
  #5 (permalink)  
Antiguo 16/08/2011, 09:26
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: forzar descarga y decodificar archivo

bueno pero vos el problema lo tenes en el
$f=$_GET['f'];
mostrame de donde viene $_GET['f']
  #6 (permalink)  
Antiguo 16/08/2011, 09:31
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: forzar descarga y decodificar archivo

mira yo descargo el archivo de esta forma ,

descarga.php?f=2d6i3csncyfgz5y

en alguna parte del codigo necesito pasarle la extension es ahi mi problema .

saludos
  #7 (permalink)  
Antiguo 16/08/2011, 09:56
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: forzar descarga y decodificar archivo

mi amigo nose si se entendio el problema que tengo .

Saludos
  #8 (permalink)  
Antiguo 16/08/2011, 10:18
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 2 meses
Puntos: 288
Respuesta: forzar descarga y decodificar archivo

Cita:
Iniciado por matt_1985 Ver Mensaje
Gracias por responder a mi pregunta , pero como podria concatenar el valor de la extension a mi codigo porque el ej que me diste me mostro la extension del archivo .

Código PHP:
Ver original
  1. <?php
  2. $f=$_GET['f'];
  3. $partes_ruta = pathinfo("/upload/surveys/46443/files/$f");
  4. //echo $partes_ruta['extension'];
  5.     header('Content-Description: File Transfer');
  6.     header("Content-type: application/octet-stream");
  7.     header("Content-Disposition: attachment; filename=\"$f\"\n");
  8.     header('Content-Transfer-Encoding: binary');
  9.     header('Expires: 0');
  10.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11.     header('Pragma: public');
  12.     $fp=fopen("$f","".$partes_ruta['extension']."", "r");
  13.     fpassthru($fp);
  14. ?>

saludos y gracias por su tiempo
y bueno:
$archivo= $f.".".$partes_ruta['extension'];
$fp=fopen($archivo, "r");
  #9 (permalink)  
Antiguo 16/08/2011, 10:46
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: forzar descarga y decodificar archivo

mi amigo hice el cambio que me mencionas pero aun asi me sigue arrojando el archivo sin las extension .

Código PHP:
Ver original
  1. $f=$_GET['f'];
  2. $partes_ruta = pathinfo("/upload/surveys/46443/files/$f");
  3. //echo $partes_ruta['extension'];
  4.     header('Content-Description: File Transfer');
  5.     header("Content-type: application/octet-stream");
  6.     header("Content-Disposition: attachment; filename=\"$f\"\n");
  7.     header('Content-Transfer-Encoding: binary');
  8.     header('Expires: 0');
  9.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  10.     header('Pragma: public');
  11.     $archivo= $f.".".$partes_ruta['extension'];
  12.     //$fp=fopen("$f","".$partes_ruta['extension']."", "r");
  13.     $fp=fopen($archivo, "r");
  14.     fpassthru($fp);

la verdad ni idea , ya que el directorio que intento leer es de un prefabricado (limesurvey) , si alguien tiene alguna idea bienvenida sea , saludos y gracias
  #10 (permalink)  
Antiguo 16/08/2011, 14:23
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: forzar descarga y decodificar archivo

No estoy seguro de que sea dificil lo que quieres hacer pero no tengo nada claro que quieres hacer, varias dudas:

Tu tienes las imagenes fisicamente?

Accedes a la imagen a traves de $_GET['f'] que es el nombre de la imagen sin extension

Y que es lo que quieres hacer? Guardartelas con la extension?

Osea que si te llega la imagen 23624762HJASDGF guardartela como 23624762HJASDGF.jpg? o no entendi nada?
  #11 (permalink)  
Antiguo 16/08/2011, 14:39
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: forzar descarga y decodificar archivo

estoy leyendo las imagenes desde un directorio donde leo parametros a traves de la url con el script que muestro el problemas es que las imagenes estan codificadas en la path que se encuentran por lo tanto ahi que añadirles manualmente la extension para que estas sean legible es como el ejemplo que me comentas , me llegan asi 23624762HJASDGF y tengo que guardarla 23624762HJASDGF.jpg u otra extension .

espero haber sido mas claro con mi duda ,

hice unos cambios al codigo , pero aun asi tengo problemas

Código PHP:
Ver original
  1. $f=$_GET['f'];
  2. $partes_ruta = pathinfo("/upload/surveys/46443/files/$f");
  3. $nombre=$f.".".$partes_ruta['extension'];
  4. //echo $partes_ruta['extension'];
  5.     header('Content-Description: File Transfer');
  6.     header("Content-type: application/octet-stream");
  7.     header("Content-Disposition: attachment; filename=\"$nombre\"\n");
  8.     header('Content-Transfer-Encoding: binary');
  9.     header('Expires: 0');
  10.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11.     header('Pragma: public');
  12.     //$fp=fopen("$f", "r");
  13.     $fp=fopen($archivo, "r");
  14.     fpassthru($fp);

saludos
  #12 (permalink)  
Antiguo 16/08/2011, 15:09
 
Fecha de Ingreso: junio-2010
Ubicación: Venezuela, Zulia
Mensajes: 686
Antigüedad: 13 años, 9 meses
Puntos: 55
Respuesta: forzar descarga y decodificar archivo

Cita:
Iniciado por matt_1985 Ver Mensaje
estoy leyendo las imagenes desde un directorio donde leo parametros a traves de la url con el script que muestro el problemas es que las imagenes estan codificadas en la path que se encuentran por lo tanto ahi que añadirles manualmente la extension para que estas sean legible es como el ejemplo que me comentas , me llegan asi 23624762HJASDGF y tengo que guardarla 23624762HJASDGF.jpg u otra extension .

espero haber sido mas claro con mi duda ,

hice unos cambios al codigo , pero aun asi tengo problemas

Código PHP:
Ver original
  1. $f=$_GET['f'];
  2. $partes_ruta = pathinfo("/upload/surveys/46443/files/$f");
  3. $nombre=$f.".".$partes_ruta['extension'];
  4. //echo $partes_ruta['extension'];
  5.     header('Content-Description: File Transfer');
  6.     header("Content-type: application/octet-stream");
  7.     header("Content-Disposition: attachment; filename=\"$nombre\"\n");
  8.     header('Content-Transfer-Encoding: binary');
  9.     header('Expires: 0');
  10.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  11.     header('Pragma: public');
  12.     //$fp=fopen("$f", "r");
  13.     $fp=fopen($archivo, "r");
  14.     fpassthru($fp);

saludos

bueno si todas las imagenes son jpg solo modifica esta linea

Código PHP:
$nombre=$f.".".$partes_ruta['extension']; 
por

Código PHP:
$nombre=$f.".jpg"
__________________
<?php echo "No te metas a lo hondo del Mar si no sabes nadar, primero aprende a nadar" ?>
...Error en linea: 1 o.O
  #13 (permalink)  
Antiguo 16/08/2011, 15:13
 
Fecha de Ingreso: marzo-2009
Mensajes: 52
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: forzar descarga y decodificar archivo

http://php.net/manual/es/function.rename.php

Eso no te sirve? :S

rename("/upload/surveys/46443/files/$f","/upload/surveys/46443/files/".$f.".jpg");

o con copy si no quieres perder el archivo sin extension: http://php.net/manual/es/function.copy.php

copy("/upload/surveys/46443/files/$f","/upload/surveys/46443/files/".$f.".jpg");
  #14 (permalink)  
Antiguo 16/08/2011, 15:25
 
Fecha de Ingreso: enero-2011
Ubicación: /root
Mensajes: 530
Antigüedad: 13 años, 3 meses
Puntos: 61
Respuesta: forzar descarga y decodificar archivo

Mi amigo funciono con el cambio que me mencionas , pero tiene varios formatos ya sea jpg, gif, png , doc, docx , xls etc etc como podria hacer que reconociera el formata en que viene el archivo y lo cargue al valor de $nombre .

Código PHP:
Ver original
  1. $f=$_GET['f'];
  2. $partes_ruta = pathinfo("/upload/surveys/46443/files/$f");
  3. //$nombre=$f.".".$partes_ruta['extension'];
  4. $nombre=$f.".jpg";  
  5. //echo $partes_ruta['extension'];
  6.     header('Content-Description: File Transfer');
  7.     header("Content-type: application/octet-stream");
  8.     header("Content-Disposition: attachment; filename=\"$nombre\"\n");
  9.     header('Content-Transfer-Encoding: binary');
  10.     header('Expires: 0');
  11.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  12.     header('Pragma: public');
  13.     //$fp=fopen("$f", "r");
  14.     $fp=fopen($f, "r");
  15.     fpassthru($fp);

saludos y muchas gracias

Última edición por matt_1985; 16/08/2011 a las 15:48

Etiquetas: decodificar, descarga, imagenes
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:19.