Отключить сафари из разархивированного загруженного файла

У меня небольшая проблема с зашифрованными zip-загрузками в Safari. Я установил все соответствующие заголовки для принудительной загрузки, но когда загруженный файл Safari пытается распаковать его, что приводит к поврежденному файлу. То, что я прочитал, потому что Safari помещает файл как безопасный, а затем пытается открыть его.

Есть ли способ отключить Safari от открытия файла после его загрузки?

Ответ 1

Вы не можете отключить эту серверную часть: (

Это поведение по умолчанию Safari для распаковки архивов после их загрузки. Это можно отключить в Safari: PreferencesGeneral → Снимите флажок Open "safe" files after downloading внизу. Но для самих пользователей это нужно сделать.

Если вам нравится, вы можете отобразить предупреждение об этом на странице загрузки.

PS: Застежка не исчезнет! Safari может (необязательно) распаковать его, но загруженный zip будет по-прежнему находиться рядом с распакованной папкой.

Ответ 2

Определенно, не самая изящная версия, но вы можете в конечном итоге использовать соединение с браузером и добавить свое имя для загрузки script в сочетании с уведомлением для пользователей 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\ 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 о том, что нужно сделать для успешной загрузки файла.

Ответ 3

Я боюсь, но вы не можете работать на стороне сервера.

Вы не можете с этим поделать. Он позволяет пользователю проверить или снять флажок, чтобы открыть загруженные файлы с помощью WinZip или другого программного обеспечения.

В max, который мы можем сделать, это показать им предупреждение/всплывающее окно, в котором предположение, что использование этого формата небезопасно или что-то похожее на аналогичные строки.

Ответ 4

Вы можете использовать jQuery, где сафари можно скрыть или отобразить кнопку или изменить событие одной кнопки и т.д.

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