php - Safari:当我单击“另存为”时,文件名不出现
问题描述
我网站的用户可以下载文件。
例子:
<a href="download.php?path=files/videos/myvideo.avi">My Video</a>
我的问题:在 Safari 中,当用户单击“另存为”时,建议的文件名不是“myvideo.avi”,而是“download.php”。例如,Chrome 中不会出现此问题。
供下载的 PHP 代码 (download.php):
$path = $_GET['path'];
$doctype = end(explode('.', $path));
$dateiname = end(explode('/', $path));
header("Content-type: application/" . $doctype);
header("Content-disposition: attachment; filename=\"" . $dateiname . "\"");
header("Content-Length: " . filesize($path));
$fp = fopen($path, 'rb');
fpassthru($fp);
单击“另存为”时,如何在 Safari 中将“myvideo.avi”建议为文件名?
解决方案
问题可能在于这样一个事实,即“download.php”中的脚本在页面加载时没有机会触发。我认为您需要在页面上执行一些实际的 PHP 代码才能获得正确的链接。
<a href="<?php **CODE THAT RETURNS CORRECT PATH** ?>">My Video</a>
或交替
<?php **CODE THAT GENERATES STRING OF CORRECT PATH**
echo "<a href='".$filepath."'>My Video</a>";
?>
这将保证无论使用什么浏览器,.php 脚本都会运行。
推荐阅读
- r - 在ggplot中删除部分填充图例
- c# - 无结构对象的序列化
- mongodb - MongoDB modifiedCount 不等于matchedCount
- javascript - Chrome.storage.local.get 在 React 中返回未定义?
- elasticsearch - Scroll API 返回的 Scroll id 太长
- c# - 如何在文件 asp.net 中下载 json 对象
- html - 选择所有电台时如何自动提交?
- spring - 如何使用 Spring Cloud Stream Binder 动态创建 Azure 服务总线订阅?
- php - Guzzle POST 返回 GuzzleHttp\Exception\ClientException 客户端错误:`POST
- android - 如何在片段内完成任务之前禁用后退按钮功能?