2013-11-24 295 views
11

我在Safari中遇到了加密zip下載的小問題。我已經設置了所有適當的頭文件來強制下載,但是當文件下載的Safari試圖解壓縮文件時會導致文件損壞。我讀過它的原因是Safari將文件標記爲安全,然後嘗試將其打開。從解壓縮下載文件中禁用Safari瀏覽器

有沒有辦法禁用Safari下載後打開文件?

+0

Safari瀏覽器有一個選項「下載後打開安全文件」我認爲如果客戶端不更改此設置,則無法繼續使用Safari瀏覽器 – matteok

+1

@Burbas:您是否嘗試過爲文件提供不正確的MIME類型?即不是'application/zip,application/octet-stream' –

回答

10

您不能禁用此服務器端:(

這是Safari瀏覽器的默認行爲,其下載後解壓檔案這可以在Safari瀏覽器被禁用:Preferences - >General - >取消勾選Open "safe" files after downloading底部。 。但是它給用戶如果喜歡自己做這個

,可以顯示一個關於下載頁面上此行爲警告

PS:!拉鍊是不會消失的Safari瀏覽器可以(可選)解壓縮它,但下載的zip仍然會在unp旁邊acked文件夾。

+0

謝謝你的回覆。這是我雖然,但需要確保:-) – Burbas

+1

與我一樣,zip文件似乎被刪除。只有文件夾保持 –

+0

(我知道它已經很舊了,但它是一個最好的谷歌結果) 如果你在自動解壓縮後找不到.zip,一定要檢查你的垃圾。 –

5

絕對不是最優雅的版本是有的,但你可能會使用瀏覽器連接處,有你的下載腳本改變附件名稱結合了Safari用戶的通知:在開始之前

<?php 

// $attachmentId used later-on would be a passed parameter that is used 
// to define attachment name 

$attachmentId= $_GET['id']; 

$userAgent = $_SERVER['HTTP_USER_AGENT']; 
if (strpos($userAgent , 'Chrome') === FALSE && 
strpos($userAgent , 'Safari') !== FALSE) 
{ 
    $attachmentName= 'download.zipname'; 
    $userNotice= 'SAFARI users: please rename the file from download.zipname to download.zip (due to Safari\'s ZIP file policy (more info))'; 
} else { 
    $attachmentName= 'download.zip'; 
    $userNotice= ''; 
} 
?> 
<span class="notice"><?php print $userNotice; ?></span> 
<a href="download.php?id=<?php print $attachmentId;?>" name="<?php print $attachmentName; ?>">Download</a> 

所以基本上下載,您可以設置此預下載頁面來定義所需的附件名稱,並通知Safari用戶有關如何成功下載該文件的操作。

+0

你甚至可以在非Safari瀏覽器的其他情況下(使用'header()','echo()'和'exit()')開始下載。所以該頁面只會顯示給Safari用戶。 – SaschaM78

+0

感謝您的回覆。這可能是我需要採取的方向,向Safari用戶展示一個醜陋的信息框:-) – Burbas

+0

@Burbas:我喜歡這個。也許完全放棄這個通知,只是用別名擴展名保存它? –

0

您可以使用jQuery的,哪裏是Safari瀏覽器,你可以隱藏或顯示按鈕或者改變一個按鈕的事件等

if (jQuery.browser.mozilla){ 
      // insert you code here 
else if (jQuery.browser.msie){ 
         // insert you code here 
else if (jQuery.browser.safari){ 
         // insert you code here 
else if (jQuery.browser.opera){ 
       // insert you code here 
} else { 
         // insert you code here 
}); 
+0

這並沒有真正回答這個問題。 –

1

恐怕但你不能在服務器端運行此。

你不能幫助這個。用戶可以使用WinZip或其他軟件檢查或取消選中打開下載的文件。

在最大限度上我們可以做的是向他們顯示一個警告/彈出窗口,暗示此格式的使用不安全或類似的行上的東西。