Отключить сафари из разархивированного загруженного файла
У меня небольшая проблема с зашифрованными zip-загрузками в Safari. Я установил все соответствующие заголовки для принудительной загрузки, но когда загруженный файл Safari пытается распаковать его, что приводит к поврежденному файлу. То, что я прочитал, потому что Safari помещает файл как безопасный, а затем пытается открыть его.
Есть ли способ отключить Safari от открытия файла после его загрузки?
Ответы
Ответ 1
Вы не можете отключить эту серверную часть: (
Это поведение по умолчанию Safari для распаковки архивов после их загрузки. Это можно отключить в Safari: Preferences
→ General
→ Снимите флажок 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
});