2009-09-24 98 views
0

我生成文件服務器端,我希望客戶端自動打開它:它是一個XLSX文件。 Firefox只是打開文件,我在瀏覽器中看到XLSX文件的二進制內容,但我希望它通過另存爲...框打開。Firefox:打開XLSX文件不保存文件butn打開二進制

它工作正常,在Chrome中使用相同的代碼(它保存的話)而在Firefox ...

任何想法?

回答

4

Have a look at this - Php exec and return binary

您是否正在發送適當的頭文件? 類似

header("Content-Type: application/octet-stream"); 
header("Content-Disposition: attachment; filename=\"yourfile.xlsx\""); 

UPDATE

header('Content-Type: application/xls'); 
header('Content-Disposition: attachment; filename=example.xlsx'); 
header('Pragma: no-cache'); 
echo file_get_contents("/path/to/yourfile.xlsx"); 

UPDATE 2種

展開片的mime類型

application/vnd.ms-excel [official] 
application/msexcel 
application/x-msexcel 
application/x-ms-excel 
application/vnd.ms-excel 
application/x-excel 
application/x-dos_ms_excel 
application/xls 

更新3

關於您的JavaScript的問題,您是否試圖使用

location.href instead of window.open ?? 
+0

該文件是根已經完成了...我希望用戶能夠打開將彈出另存爲對話框的文件。但是,當我用window.open打開XLSX文件的URL時,它會在瀏覽器中顯示文件的實際二進制文件。 – Amadeus45 2009-09-24 08:18:07

+0

查看更新... – TigerTiger 2009-09-24 08:23:04

+0

第一次更新完成了這份工作......謝謝! – Amadeus45 2009-09-24 08:45:50

0

你需要確保你發送此MIME類型的Content-Type頭: -

應用/ vnd.openxmlformats -officedocument.spreadsheetml.sheet

所以,你需要的.xslx擴展此MIME類型映射到服務器上