0

トレーニング用に複数のファイルをアップロードし、training_ID に従ってリストします。複数のファイルを持つ training_id に関連付けられた単一のファイルをダウンロードするにはどうすればよいですか? .txt、.pdf、.docx、.pptx のファイル タイプがあります。これが私が試したPHPファイルです。

<?php
$id= $_GET['id'];
$mysqli = new mysqli("localhost","root","pass","test");
if ($mysqli->connect_errno)
{
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}
$query = "SELECT Material_Name,Material_Data from Training_Material where     Training_Id='{$id}'";
$result = $mysqli->query($query);
if($result) 
{
    $row = mysqli_fetch_assoc($result);
    header("Content-Disposition: attachment; filename=". $row['Material_Name']);    
    echo $row['Material_Data'];
    @mysqli_free_result($result);
}
else 
{
    echo "Error! Query failed: <pre>{$mysqli->error}</pre>";
}
?>

このファイルでは、ダウンロードは行われません。

ここで、DB の Material_Data 列には、file_get_contents メソッドを使用して取得したアップロード ファイルの内容が含まれています。ダウンロードを行うにはどうすればよいですか?

4

2 に答える 2

0

複数のライセンスデータを利用できるサイトの1つで、必要なすべてのライセンスファイルを一時フォルダーにコピーし、すべてを含むzipアーカイブを作成してから、zipファイルをエンドユーザーにプッシュして一時ファイルデータを削除します。 。

これには、単一ファイルのダウンロード、圧縮ファイルのダウンロードが少ないため、帯域幅のストレスを軽減するという2つの利点があります。また、ファイルを移動するためにzipとディスクIOをコンパイルするためのプロセッサの使用にはいくつかの欠点があります。ただし、最新のハードウェアでは、最大規模のサイトを除くすべてのサイトでIO/CPUはほとんど無関係であると判断しました。

于 2013-01-23T08:43:49.270 に答える
0

次のようなコンテンツタイプのヘッダーを送信する必要があります。

header("Content-Type: plain/text");
于 2013-01-23T08:44:50.397 に答える