2012-07-14 33 views
8

Puedo descargar mi palabra de Microsoft con éxito si la he nombrado en el nombre del archivo de forma predeterminada. Pero si uso $ variables para nombrarlo. La extensión del documento será desconocida.cabecera http para descargar archivos de Microsoft Word y Excel

muestra:

$No = 1; 
$Name = 'John'; 
$Test = 'Science'; 

//Download header 
$document->save($doc); 
header('Content-Description: File Transfer'); 
header('Content-Type: application/msword'); 
header("Content-Disposition: attachment; filename='$No_$Name_$Test.docx"); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($doc)); 
ob_clean(); 
flush(); 
readfile($doc); 

Así que si cambio el nombre de mi nombre como variables. La descarga del archivo será sin la extensión docx. ¿Alguien puede aconsejar?

Gracias

Respuesta

3

Cambie este

header('Content-Type: application/msword'); 

a

header('Content-Type: application/octet-stream'); 

EDIT:

y el cambio

header("Content-Disposition: attachment; filename='$No_$Name_$Test.docx"); 

a

+0

he tratado antes ya. Usando Firefox para guardar el documento, no me da ninguna extensión de archivo que se convierte en un archivo desconocido. – JLearner

+0

¿Has probado la aplicación/zip –

+0

archivo no válido también. Lo intenté de todas las maneras pero parece que IE y Firefox tienen este problema para que lo descargue correctamente con la extensión de archivo – JLearner

13

cabeceras correctas son

para Excel (* .xlsx):

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
header('Content-Disposition: attachment;filename="' . $fileName . '"'); 

para Word (* .docx):

header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); 
header('Content-Disposition: attachment;filename="' . $fileName . '"'); 
+0

¿Por qué este encabezado complicado en lugar de 'application/zip' para Word? –

+0

@MarceloRafael ¿Por qué esperaría que 'application/zip' trabaje para un documento de Word? –

+0

Porque es básicamente un archivo zip – Richard

1

El uso correcto de ese encabezado es:

Content-Disposition: attachment; filename="fname.ext" nota que si el nombre contiene espacios debe ser citado

Ver RFC6266sección 5. Ejemplos

Cuestiones relacionadas