Foros del Web » Programando para Internet » PHP »

Forzar descarga con header()?

Estas en el tema de Forzar descarga con header()? en el foro de PHP en Foros del Web. Hola tengo este código para forzar descargas de archivos pdf. ¿Se puede modificar para que descargue .pdf pero también .doc (archivos Word)? Código PHP: <?php ...
  #1 (permalink)  
Antiguo 07/12/2009, 10:01
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Forzar descarga con header()?

Hola

tengo este código para forzar descargas de archivos pdf.
¿Se puede modificar para que descargue .pdf pero también .doc (archivos Word)?

Código PHP:
<?php
header
('Content-type:application/pdf'); 

$filename basename($_POST['rutaArchivo']); 
header('Content-Disposition: attachment; filename="' $filename '"');  

readfile($_POST['rutaArchivo']);
?>
Gracias
Saludos
  #2 (permalink)  
Antiguo 07/12/2009, 10:03
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Forzar descarga con header()?

y la pregunta? no veo signos de interrogación en ningún lado
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 07/12/2009, 10:12
Avatar de Joni2Back  
Fecha de Ingreso: marzo-2009
Mensajes: 146
Antigüedad: 15 años
Puntos: 1
Respuesta: Forzar descarga con header()?

Cita:
Iniciado por chefnelone Ver Mensaje
Hola

tengo este código para forzar descargas de archivos pdf.
¿Se puede modificar para que descargue .pdf pero también .doc (archivos Word)?

Código PHP:
<?php
header
('Content-type:application/pdf'); 

$filename basename($_POST['rutaArchivo']); 
header('Content-Disposition: attachment; filename="' $filename '"');  

readfile($_POST['rutaArchivo']);
?>
Gracias
Saludos
tendrias que hacer un if para comparar si tu archivo es doc o pdf.. ya sea por content type o por extension

una vez que sepas el tipo de archivo que estas manejando, ahi le asignas el content type y la disposition
  #4 (permalink)  
Antiguo 07/12/2009, 10:17
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Forzar descarga con header()?

Hace un tiempo hice esta función en caso de que no te funcione el mime_content_type en tu servidor...
contiene los archivos mas comunes :B
saludos!

Código php:
Ver original
  1. function get_mime($filename) {
  2.     $fileSuffix ="";
  3.     preg_match ( "|\.([a-z0-9]{2,5})$|i", $filename, $fileSuffix );
  4.     switch (strtolower ( $fileSuffix [1] )) {
  5.         case "js" :
  6.             $tipo[0] = "Aplicaci&oacute;n Javascript";
  7.             $tipo[1] = "application/x-javascript";
  8.             return $tipo;
  9.        
  10.         case "json" :
  11.             $tipo[0] = "Aplicaci&oacute;n Json";
  12.             $tipo[1] = "application/json";
  13.             return $tipo;
  14.        
  15.         case "jpg" :
  16.         case "jpeg" :
  17.         case "jpe" :
  18.             $tipo[0] = "Archivo de Imagen";
  19.             $tipo[1] = "image/jpg";
  20.             return $tipo;
  21.        
  22.         case "png" :
  23.         case "gif" :
  24.         case "bmp" :
  25.         case "tiff" :
  26.             $tipo[0] = "Archivo de Imagen";
  27.             $tipo[1] = "image/" . strtolower ( $fileSuffix [1] );
  28.             return $tipo;
  29.        
  30.         case "css" :
  31.             $tipo[0] = "Hoja de estilos";
  32.             $tipo[1] = "text/css";
  33.             return $tipo;
  34.        
  35.         case "xml" :
  36.             $tipo[0] = "Archivo XML";
  37.             $tipo[1] = "application/xml";
  38.             return $tipo;
  39.        
  40.         case "doc" :
  41.         case "docx" :
  42.             $tipo[0] = "Archivo de Microsoft Word";
  43.             $tipo[1] = "application/msword";
  44.             return $tipo;
  45.        
  46.         case "xls" :
  47.         case "xlt" :
  48.         case "xlm" :
  49.         case "xld" :
  50.         case "xla" :
  51.         case "xlc" :
  52.         case "xlw" :
  53.         case "xll" :
  54.             $tipo[0] = "Archivo de Microsoft Excel";
  55.             $tipo[1] = "application/vnd.ms-excel";
  56.             return $tipo;
  57.        
  58.         case "ppt" :
  59.         case "pps" :
  60.             $tipo[0] = "Archivo de Microsoft Power Point";
  61.             $tipo[1] = "application/vnd.ms-powerpoint";
  62.             return $tipo;
  63.        
  64.         case "rtf" :
  65.             $tipo[0] = "Archivo de texto Wordpad";
  66.             $tipo[1] = "application/rtf";
  67.             return $tipo;
  68.        
  69.         case "pdf" :
  70.             $tipo[0] = "Archivo de Presentaci&oacute;n PDF";
  71.             $tipo[1] = "application/pdf";
  72.             return $tipo;
  73.        
  74.         case "html" :
  75.         case "htm" :
  76.         case "php" :
  77.             $tipo[0] = "Archivo de internet";
  78.             $tipo[1] = "text/html";
  79.             return $tipo;
  80.        
  81.         case "txt" :
  82.             $tipo[0] = "Archivo de texto";
  83.             $tipo[1] = "text/plain";
  84.             return $tipo;
  85.        
  86.         case "mpeg" :
  87.         case "mpg" :
  88.         case "mpe" :
  89.             $tipo[0] = "Archivo de Video";
  90.             $tipo[1] = "video/mpeg";
  91.             return $tipo;
  92.        
  93.         case "mp3" :
  94.             $tipo[0] = "Archivo de Audio";
  95.             $tipo[1] = "audio/mpeg3";
  96.             return $tipo;
  97.        
  98.         case "wav" :
  99.             $tipo[0] = "Archivo de Audio";
  100.             $tipo[1] = "audio/wav";
  101.             return $tipo;
  102.        
  103.         case "aiff" :
  104.         case "aif" :
  105.             $tipo[0] = "Archivo de Audio";
  106.             $tipo[1] = "audio/aiff";
  107.             return $tipo;
  108.        
  109.         case "avi" :
  110.             $tipo[0] = "Archivo de Video";
  111.             $tipo[1] = "video/msvideo";
  112.             return $tipo;
  113.        
  114.         case "wmv" :
  115.             $tipo[0] = "Archivo de Video";
  116.             $tipo[1] = "video/x-ms-wmv";
  117.             return $tipo;
  118.        
  119.         case "mov" :
  120.             $tipo[0] = "Archivo de Video";
  121.             $tipo[1] = "video/quicktime";
  122.             return $tipo;
  123.        
  124.         case "zip" :
  125.             $tipo[0] = "Archivo comprimido";
  126.             $tipo[1] = "application/x-rar-compressed";
  127.             return $tipo;
  128.        
  129.         case "rar" :
  130.             $tipo[0] = "Archivo comprimido";
  131.             $tipo[1] = "application/zip";
  132.             return $tipo;
  133.            
  134.         case "tar" :
  135.             $tipo[0] = "Archivo comprimido";
  136.             $tipo[1] = "application/x-tar";
  137.             return $tipo;
  138.        
  139.         case "swf" :
  140.             $tipo[0] = "Archivo flash";
  141.             $tipo[1] = "application/x-shockwave-flash";
  142.             return $tipo;
  143.        
  144.         default :
  145.             if (function_exists ( "mime_content_type" )) {
  146.                 $fileSuffix = mime_content_type ( $filename );
  147.             }
  148.             $tipo[0] = "Archivo Desconocido";
  149.             $tipo[1] = "unknown/" . trim ( $fileSuffix [0], "." );
  150.             return $tipo;
  151.     }  
  152. }
__________________
More about me...
~ @rhyudek1
~ Github
  #5 (permalink)  
Antiguo 07/12/2009, 10:26
 
Fecha de Ingreso: diciembre-2005
Ubicación: Barcelona
Mensajes: 1.428
Antigüedad: 18 años, 4 meses
Puntos: 15
Respuesta: Forzar descarga con header()?

Cita:
Iniciado por Hidek1 Ver Mensaje
Hace un tiempo hice esta función en caso de que no te funcione el mime_content_type en tu servidor...
contiene los archivos mas comunes :B
saludos!

Código php:
Ver original
  1. function get_mime($filename) {
  2.     $fileSuffix ="";
  3.     preg_match ( "|\.([a-z0-9]{2,5})$|i", $filename, $fileSuffix );
  4.     switch (strtolower ( $fileSuffix [1] )) {
  5.         case "js" :
  6.             $tipo[0] = "Aplicaci&oacute;n Javascript";
  7.             $tipo[1] = "application/x-javascript";
  8.             return $tipo;
  9.        
  10.         case "json" :
  11.             $tipo[0] = "Aplicaci&oacute;n Json";
  12.             $tipo[1] = "application/json";
  13.             return $tipo;
  14.        
  15.         case "jpg" :
  16.         case "jpeg" :
  17.         case "jpe" :
  18.             $tipo[0] = "Archivo de Imagen";
  19.             $tipo[1] = "image/jpg";
  20.             return $tipo;
  21.        
  22.         case "png" :
  23.         case "gif" :
  24.         case "bmp" :
  25.         case "tiff" :
  26.             $tipo[0] = "Archivo de Imagen";
  27.             $tipo[1] = "image/" . strtolower ( $fileSuffix [1] );
  28.             return $tipo;
  29.        
  30.         case "css" :
  31.             $tipo[0] = "Hoja de estilos";
  32.             $tipo[1] = "text/css";
  33.             return $tipo;
  34.        
  35.         case "xml" :
  36.             $tipo[0] = "Archivo XML";
  37.             $tipo[1] = "application/xml";
  38.             return $tipo;
  39.        
  40.         case "doc" :
  41.         case "docx" :
  42.             $tipo[0] = "Archivo de Microsoft Word";
  43.             $tipo[1] = "application/msword";
  44.             return $tipo;
  45.        
  46.         case "xls" :
  47.         case "xlt" :
  48.         case "xlm" :
  49.         case "xld" :
  50.         case "xla" :
  51.         case "xlc" :
  52.         case "xlw" :
  53.         case "xll" :
  54.             $tipo[0] = "Archivo de Microsoft Excel";
  55.             $tipo[1] = "application/vnd.ms-excel";
  56.             return $tipo;
  57.        
  58.         case "ppt" :
  59.         case "pps" :
  60.             $tipo[0] = "Archivo de Microsoft Power Point";
  61.             $tipo[1] = "application/vnd.ms-powerpoint";
  62.             return $tipo;
  63.        
  64.         case "rtf" :
  65.             $tipo[0] = "Archivo de texto Wordpad";
  66.             $tipo[1] = "application/rtf";
  67.             return $tipo;
  68.        
  69.         case "pdf" :
  70.             $tipo[0] = "Archivo de Presentaci&oacute;n PDF";
  71.             $tipo[1] = "application/pdf";
  72.             return $tipo;
  73.        
  74.         case "html" :
  75.         case "htm" :
  76.         case "php" :
  77.             $tipo[0] = "Archivo de internet";
  78.             $tipo[1] = "text/html";
  79.             return $tipo;
  80.        
  81.         case "txt" :
  82.             $tipo[0] = "Archivo de texto";
  83.             $tipo[1] = "text/plain";
  84.             return $tipo;
  85.        
  86.         case "mpeg" :
  87.         case "mpg" :
  88.         case "mpe" :
  89.             $tipo[0] = "Archivo de Video";
  90.             $tipo[1] = "video/mpeg";
  91.             return $tipo;
  92.        
  93.         case "mp3" :
  94.             $tipo[0] = "Archivo de Audio";
  95.             $tipo[1] = "audio/mpeg3";
  96.             return $tipo;
  97.        
  98.         case "wav" :
  99.             $tipo[0] = "Archivo de Audio";
  100.             $tipo[1] = "audio/wav";
  101.             return $tipo;
  102.        
  103.         case "aiff" :
  104.         case "aif" :
  105.             $tipo[0] = "Archivo de Audio";
  106.             $tipo[1] = "audio/aiff";
  107.             return $tipo;
  108.        
  109.         case "avi" :
  110.             $tipo[0] = "Archivo de Video";
  111.             $tipo[1] = "video/msvideo";
  112.             return $tipo;
  113.        
  114.         case "wmv" :
  115.             $tipo[0] = "Archivo de Video";
  116.             $tipo[1] = "video/x-ms-wmv";
  117.             return $tipo;
  118.        
  119.         case "mov" :
  120.             $tipo[0] = "Archivo de Video";
  121.             $tipo[1] = "video/quicktime";
  122.             return $tipo;
  123.        
  124.         case "zip" :
  125.             $tipo[0] = "Archivo comprimido";
  126.             $tipo[1] = "application/x-rar-compressed";
  127.             return $tipo;
  128.        
  129.         case "rar" :
  130.             $tipo[0] = "Archivo comprimido";
  131.             $tipo[1] = "application/zip";
  132.             return $tipo;
  133.            
  134.         case "tar" :
  135.             $tipo[0] = "Archivo comprimido";
  136.             $tipo[1] = "application/x-tar";
  137.             return $tipo;
  138.        
  139.         case "swf" :
  140.             $tipo[0] = "Archivo flash";
  141.             $tipo[1] = "application/x-shockwave-flash";
  142.             return $tipo;
  143.        
  144.         default :
  145.             if (function_exists ( "mime_content_type" )) {
  146.                 $fileSuffix = mime_content_type ( $filename );
  147.             }
  148.             $tipo[0] = "Archivo Desconocido";
  149.             $tipo[1] = "unknown/" . trim ( $fileSuffix [0], "." );
  150.             return $tipo;
  151.     }  
  152. }
Gracias hidek1
con esto seguro que me arreglo.

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 13:37.