例:
PHP で指定した画像をダウンロードするには?ブラウザで開くのではなく?
<?php $file = "/tmp/dummy.tar.gz"; header("Content-type: application/octet-stream"); header('Content-Disposition: attachment; filename="' . basename($file) . '"'); header("Content-Length: ". filesize($file)); readfile($file);
Han Shuping が PHP ダウンロードについて話している事例を投稿します。お役に立てれば幸いです。ビデオを見る必要がある場合は、Han Shuping PHP ビデオ チュートリアル レクチャー 87 をご覧ください:
コードは次のとおりです:
//関数の説明
//パラメータの説明 $file_name ファイル名
/ /$file_sub_dir: ダウンロード ファイル '"/xxx/xxx/" のサブパス
function down_file($file_name,$file_sub_dir){
//ファイルが中国語の場合。
//理由 php ファイル関数は比較的古いため、中国語 gb2312 をトランスコードする必要があります
$file_name=iconv("utf-8","gb2312",$file_name);
//絶対パス
$file_path=$_SERVER[ 'DOCUMENT_ROOT'][
].$file_sub_dir.$file_name;
//1. ファイルを開きます
if(!file_exists($file_path)){
echo "ファイルが存在しません!" ;
,"r");
//2. ファイルを処理します
// ダウンロードされたファイルのサイズを取得します
if($file_size>30){
echo "< script language= 'javascript'>window.alert('toolarge')";
return ;
}
//返されたファイル
header("Content-type: application/octet-stream") ;
//バイトサイズに応じて返す
header("Accept-Ranges: bytes");
// ファイルサイズを返す
header("Accept-Length: $file_size");ここでのクライアントのダイアログ ボックスは、ファイル名
header("Content-Disposition:attachment; filename=".$file_name);
//データをクライアントに送信します
$buffer=1024; //ダウンロードのセキュリティを確保するために、ファイル バイト読み取りカウンターを 1 つ作成することをお勧めします
$file_count=0
//この文は、ファイルが終了したかどうかを判断するために使用されます
while(!feof($fp) && ($file_size-$file_count> ;0) ){
$file_data=fread ($fp,$buffer);
// 読み取られたバイト数をカウントします
$file_count+=$buffer;
// データの一部をブラウザに送信します。 $file_data;
}
//ファイルを閉じる
fclose($fp);
//関数が利用可能かどうかをテストする
down_file("Shunping.jpg","/http/down/");
?>