2012-07-14 13 views
8

Mogę pobrać moje słowo microsoft z powodzeniem, jeśli nazwałem je domyślnie w nazwie pliku. Ale jeśli użyję zmiennych $, aby nadać mu nazwę. Rozszerzenie dokumentu będzie nieznane.Nagłówek http do pobierania plików Microsoft Word i Excel

Próbka:

$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); 

Więc jeśli mogę zmienić nazwę mojego pliku jako zmienne. Pobieranie pliku będzie odbywać się bez rozszerzenia docx. Czy ktoś może doradzić?

Dzięki

Odpowiedz

3

Zmiana ta

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

do

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

EDIT:

I zmienić

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

do

+0

próbowałem już wcześniej. Używanie firefox do zapisania dokumentu, nie daje mi rozszerzenia pliku, który staje się nieznanym plikiem. – JLearner

+0

Czy próbowałeś również pliku/zip –

+0

nieprawidłowy plik. Próbowałem na wszystkie sposoby, ale wydaje mi się, że IE i Firefox mają problem z pobraniem go z rozszerzeniem pliku – JLearner

13

Poprawne nagłówki są

for Excel (* .xlsx):

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

dla programu Word (* .docx):

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

Dlaczego ten skomplikowany nagłówek zamiast "application/zip" dla Worda? –

+0

@MarceloRafael Dlaczego miałbyś oczekiwać, że 'application/zip' będzie działał dla dokumentu Worda? –

+0

Ponieważ jest to w zasadzie plik zip – Richard

1

Prawidłowe stosowanie tego nagłówka:

Content-Disposition: attachment; filename="fname.ext" uwaga, że ​​jeśli nazwa zawiera spacje musi być cytowane

Zobacz RFC6266rozdziale 5. Przykłady

Powiązane problemy