从解压缩下载的文件中禁用safari

Bur*_*bas 11 html php safari header web

我在Safari中加密的zip下载有一个小问题.我已设置所有适当的标题以强制下载,但是当文件下载的Safari尝试解压缩时会导致文件损坏.我读过它是因为Safari将文件标记为安全,然后尝试打开它.

有没有办法在下载后禁用Safari打开文件?

Jas*_*wer 10

你无法禁用此服务器端:(

在下载后解压缩归档是Safari的默认行为.这可以在Safari中禁用:Preferences- > General- >取消选中Open "safe" files after downloading底部的框.但这取决于用户自己做到这一点.

如果您愿意,可以在下载页面上显示有关此行为的警告.

PS:拉链不会消失!Safari可以(可选)解压缩,但下载的zip仍然会在解压缩的文件夹旁边.

  • 对我来说,zip文件似乎被删除了.只剩下文件夹了 (2认同)
  • (我知道它已经过时了,但这是谷歌的最佳结果)如果您在自动解压缩后找不到.zip,请务必检查您的垃圾箱. (2认同)

Sas*_*M78 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>
Run Code Online (Sandbox Code Playgroud)

因此,基本上在开始下载之前,您将设置此预下载页面以定义所需的附件名称,并通知safari用户有关成功下载文件的操作.