2017-09-01 4 views
-3

このコードを使用してヘッダーを使用して強制的にダウンロードすると、ファイル名は正しく変更されますが、ファイルは空です。PHPヘッダーを使用して強制ダウンロードする

$file = url . '/uploads/audio/' . $trackFile; 

$tmp = explode(".", $file); 
$newTrackName = $trackTitle . '.' . end($tmp); 

header('Content-Description: File Transfer'); 
header('Content-Type: application/octet-stream'); 
header('Content-Disposition: attachment; filename=' . $newTrackName); 
header('Content-Transfer-Encoding: binary'); 
header('Connection: Keep-Alive'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
+1

[readfile()](http://php.net/manual/en/function.readfile.php)を参照してください。 – RiggsFolly

+0

'url'は' $ url 'maybe – RiggsFolly

答えて

1

実際にファイルを送信していません。あなたが追加する必要があり

echo readfile($file); 
exit; 

または

header("Location: $file"); 
1

..

readfile($file); 
exit; 
+0

まだ空のファイルをダウンロードしていますが、ファイルのURLは正しいです。 –

0

あなたが正しいと私は両方の答えをupvotedが、私はまた、cPanelのの新しいバージョンがでのfopenの投入ことがわかりましたデフォルトでは、私はfopenを有効にしなければなりませんでした。

+1

おそらく、fopen経由で_making HTTPリクエストが無効になっていることを意味しますか?それでは、最初にURLを使用しているのはなぜですか?アップロードされたファイルは別のサーバーに配置されていますか?そうでない場合は、URLではなくファイルシステムパスを使用する必要があります。ファイルシステムから直接読み取ることができるデータを取得するために、独自のシステムに追加のHTTP要求を行うことは、不必要なオーバーヘッドです。 – CBroe

関連する問題