【发布时间】:2013-02-06 13:28:26
【问题描述】:
我有以下代码,我用它来强制下载文件而不是在浏览器中打开。
if(isset($_POST['file_name'])){
$player_file = $_POST['file_name'];
$accessKey = "REMOVED";
$secretKey = "REMOVED";
$bucket = $_POST['bucket'];
$fname = $_POST['fname'];
$zip_url = el_s3_getTemporaryZipLink($accessKey, $secretKey, $bucket, $fname);
$mp3_url = el_s3_getTemporaryMP3Link($accessKey, $secretKey, $bucket, $fname);
header('Content-type: audio/mpeg3');
header('Content-Disposition: attachment; filename="themixtapesite_'.$player_file.'"');
readfile($mp3_url);
exit();
}
如您所见,我从一个表单传递所有变量。然后使用该信息为存储在 Amazon S3 上的文件生成唯一的签名 URL。
如果文件是 MP3,我需要它使用 $mp3_url,如果它是 Zip 文件,我需要使用 $zip_url。
这一定很简单,但是我整天坐在屏幕前,现在脑子一片空白!
任何帮助表示赞赏。
【问题讨论】:
-
创建一个数组保存扩展。检查请求文件的扩展名并据此设置内容类型。
-
依赖扩展来检查内容类型是一个坏习惯...
标签: php content-type