簡體   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