2012-07-14 27 views
8

Tôi có thể tải xuống từ microsoft của mình thành công nếu tôi đặt tên nó trong tên tệp theo mặc định. Nhưng nếu tôi sử dụng $ biến để đặt tên cho nó. Phần mở rộng tài liệu sẽ không được biết.tiêu đề http để tải xuống các tệp Microsoft Word và Excel

mẫu:

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

Vì vậy, nếu tôi đổi tên filename của tôi như biến. Tệp tải xuống sẽ không có phần mở rộng docx. Bất cứ ai cũng có thể tư vấn?

Cảm ơn

Trả lời

3

Thay đổi này

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

để

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

EDIT:

Và thay đổi

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

để

+0

tôi đã cố gắng trước đã. Sử dụng firefox để lưu tài liệu, nó cho tôi không có phần mở rộng tập tin mà trở thành tập tin không rõ. – JLearner

+0

Bạn đã thử ứng dụng/zip –

+0

tệp không hợp lệ. Tôi đã thử tất cả các cách nhưng có vẻ như IE và Firefox có vấn đề này cho tôi để tải nó thành công với phần mở rộng tập tin – JLearner

13

tiêu đề đúng là

cho Excel (* .xlsx):

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

cho Word (* .docx):

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

Tại sao tiêu đề phức tạp này thay vì 'ứng dụng/zip' cho Word? –

+0

@MarceloRafael Tại sao bạn mong đợi 'ứng dụng/zip' để làm việc cho một tài liệu Word? –

+0

Vì về cơ bản đây là tệp zip – Richard

1

Việc sử dụng đúng của tiêu đề đó là:

Content-Disposition: attachment; filename="fname.ext" lưu ý rằng nếu tên chứa dấu cách nó phải được trích dẫn

Xem RFC6266phần 5. Ví dụ

Các vấn đề liên quan