繁体   English   中英

动态设置Content-Type

[英]Set Content-Type dynamically

我有以下代码,我用来强制下载文件而不是在浏览器中打开。

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。

这一定非常简单,但是我整天坐在这个屏幕前,现在我已经有了一个完整的空白!

任何帮助赞赏。

  1. 这段代码是一个巨大的安全漏洞。 您刚刚为愿意使用它的人打开了服务器的大门。
  2. 使用mime类型数组来确定扩展名之外的mime类型(但是,您需要进行额外的安全检查,因为仅仅在扩展上进行转发并不是一件明智的事情)。
  3. 使用switch语句确定要使用的函数。 切换后你应该有$url - 只有一个存储扩展名的变量,而不是两个不同的变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM