2010-02-09 55 views
1

背景:關閉選項以從網站在Internet Explorer中打開xls文件?

我已經建立了一個客戶端的Web應用程序,允許他們將Excel文件保存到服務器。

當我第一次構建應用程序時,我將這些文件存儲在上傳文件夾中,並直接從應用程序中的頁面(例如文件)鏈接到它們。

經過反思,這並不是非常安全,所以我更改了上傳文件以將文件存儲在Web根目錄上,從而防止直接訪問。

我通過php'Retriever'文件(例如File)將文件傳回給用戶。該文件(有些用戶認證檢查後)看起來是這樣的:

header("Content-type: application/octet-stream"); 
$_file = $_GET['filename']; 
$sPattern = '/\s*/m'; 
$sReplace = ''; 

$_strippedfile = preg_replace($sPattern, $sReplace, $_file); 
header("Content-Disposition: attachment; filename=".$_strippedfile.""); 
echo file_get_contents('/var/www/uploads/'.$_file); 

問題:

以上,除非用戶選擇「打開」,而不是在Internet Explorer中「拯救」一切工作正常。 Excel試圖打開文件並拋出'...找不到。檢查文件名稱的拼寫,並驗證文件位置是否正確。

我google了那個錯誤,它似乎是做的文件名(包括路徑)的長度。不幸的是臨時互聯網文件的路徑超出了我的控制範圍,所以想知道是否有強制用戶保存文件而不是打開它的方法? [顯然這可以在本地配置,但a)我的客戶不是很技術,b)因爲他們在公司網絡上,所有管理員權限都被束縛。]

歡迎任何其他想法。

+0

我remeber用_underscores保換周圍有與文件名和IE的空間問題,gettingg。 – 2010-02-09 13:35:52

+0

感謝您的快速響應。看起來你對特殊字符是正確的,但Internet Explorer似乎將它們自己放入!?它似乎是保存與額外的方括號,例如文件。 myfile [1] .xls在臨時Internet文件中,即使我清除了臨時Internet文件夾。我已經用Firefox測試過,並且保存爲myfile.xls。離奇。有任何想法嗎? – Derek 2010-02-09 13:56:11

回答

2

您可以防止文件的打開IE8中通過發送頭

X-Download-Options: noopen

在早期版本中,你需要一個DOWNLOADOPTIONS元標記添加到包含XLS文件的頁面。

但是,您碰到的問題似乎很可能與文件名的長度以及響應中緩存標頭的所有操作無關。您需要確保您的文件被標記爲可緩存(例如,緩存控制:私人),特別是如果您使用HTTPS。進一步討論見Download file over HTTPS in IE 5.5/IIS 5.0

+0

排序!你對緩存控制設置是正確的。接到一個教程以下: //啓用緩存 //秒,分鐘,小時,天 $到期= 60 * 60 * 24 * 14; header(「Pragma:public」); header(「Cache-Control:maxage =」。$ expires); 頭( '過期:' gmdate( 'd,d M Y H:I:S',時間()+ $到期) 'GMT'); 現在文件打開時沒有問題。 謝謝! – Derek 2010-02-10 09:50:52

1

我不這麼認爲。在相關應用程序中打開文件是瀏覽器提供的基本功能,不會受到影響。

這很可悲,因爲這裏還有一個額外的用戶體驗問題。我從互聯網上打開一個文件,Excel讓我編輯它。所以當我保存它時,我可以放心地認爲這些更改可以回到互聯網。對?或者至少,他們不會丟失。對?對?嘗試向一位從事此類文檔工作兩個小時的非技術用戶解釋他們的工作已經失敗。

但我離題了。您可能想要更多地使用下載頭文件。我很難想象下載後無法直接打開Excel文件。

你可以嘗試發送Content-type: application/ms-excel?或者會自動打開,而不是提供保存?

此外,您的文件名是否包含任何特殊字符/變音符號?斜線? Gipsy King提到的空間?所有這些都可能導致打開時出現問題。

+0

看起來你是對的特殊字符,但Internet Explorer似乎把它們本身!?它似乎是保存與額外的方括號,例如文件。 myfile [1] .xls在臨時Internet文件中,即使我清除了臨時Internet文件夾。我已經用Firefox測試過,並且保存爲myfile.xls。離奇。有任何想法嗎? – Derek 2010-02-09 13:55:15

+0

P.S.感謝您及時的回覆! – Derek 2010-02-09 13:55:45

+0

括號來自文件夾中已存在的同名文件,taht應該是o.k.如果沒有其他特殊字符'AOU/$%'等等,這真的很奇怪爲什麼這是行不通的... – 2010-02-09 14:53:13

相關問題