0

さまざまなファイル形式 (PDF、DOC、POWER POINT、および画像) をダウンロードするダウンロード ページを作成しようとしています。これはpdfで機能しますが、最初の問題は、システム全体が再起動したり、人間が読めないコンテンツの他のページにリダイレクトしたりすることがあることです。第二に、application/pdf 以外の他のファイル形式 (MIME) はダウンロードされるだけでなく、pdf がダウンロードされることもありますが、それを開こうとすると、ファイル形式が正しくないというエラー メッセージが表示されます。以下は、ダウンロードページを作成するために使用するヘッダーです。

header('Content-Type: application/{$_GET['mime']}');
header("Content-Disposition:attachment; filename='{$_GET['name']}'\n");
header("Content-Length:{$_GET['size']}\n");
header('Content-Transfer-Encoding: binary');

以下は、私が許可しようとしたさまざまな MIME です。

$permitted = array('text/html', 'image/jpeg', 'image/png', 'image/jpg','image/gif',
 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 
 'application/pdf', 'text/plain', 
 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
 'application/vnd.openxmlformatsofficedocument.presentationml.presentation');

これが(ほぼ)すべてをまとめたコードです。

$flag = false;
$filepath = $_GET['path'] . $_GET['name']
foreach($permitted as $value) {
    if($_GET['mime'] == $value) {
        $flag=true;
        break;
    }
    if($flag == true) {
        header('Content-Type: application/{$_GET['mime']}');
        header("Content-Disposition:attachment; filename='{$_GET['name']}'\n");
        header("Content-Length:{$_GET['size']}\n");
        header('Content-Transfer-Encoding: binary');
        readfile($filepath)
    }

学校でのプロジェクトにこれを使用しているので、すべての回答に感謝します....

4

0 に答える 0