0

さまざまな種類のファイルが多数含まれるフォルダーがあります。要求されたファイルを表示する必要があるため、それに応じてヘッダーを調整する必要があります。私が試したのは:

header( 'Content-Type: ' . filetype( 'files/' . $file ) );

readfile( 'files/' . $file );

JPG、PNG、GIF ファイルでは機能しますが、何らかの理由で MP3 ファイルは既にブラウザーをクラッシュさせるため、すべてのファイル タイプで機能するとは限りません。アプローチまたはコードに何か問題がありますか? どのようにしますか?ありがとう!

4

3 に答える 3

3

PHP ドキュメントにより、ファイルのタイプをfiletype() 返します。可能な値は、fifo、char、dir、block、link、file、socket、unknown です。

必要なのは、ファイルの MIME タイプです。必要なのはFileinfoです。例えば:

$finfo = finfo_open(FILEINFO_MIME_TYPE);
header("Content-Type: ".finfo_file($finfo, 'files/'.$file));
finfo_close($finfo);
readfile('files/'.$file);

システムに他に問題がないことを確認するために、利用可能な場合はmime_content_typeをすばやく試すこともできます。しかし、これは推奨されていないため、推奨されませ

于 2012-10-03T15:54:04.037 に答える
1

正しい MIME タイプを送信する必要がありますが、これは難しい場合があります。

mime-content-type関数を使用できますが、これは非推奨の関数です。

$mimetype = mime_content_type ( $file );
header( 'Content-type: '. $mimetype );
于 2012-10-03T15:53:53.087 に答える
0

これを mp3 ファイルに使用します

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
于 2012-10-03T15:52:58.753 に答える