単純な php ファイルはソース コードをダウンロードしますが、ブレークポイントの再開などはサポートされていませんが、いくつかの一般的なニーズを満たすことができます。 PHP ファイルのダウンロードは、実際には magento-1.8.1.0.zip などの a タグを使用して実行できます。ただし、.txt、.html、.pdf など、ブラウザが認識できる形式がある場合は、abc.txt を使用します。何が起こるか知っていると思います。
/**
*ファイルのダウンロード
*
**/
header("Content-type:text/html;charset=utf-8");
download('web/magento-1.8.1.0.zip', 'magento download');
function download($file, $down_name){
$suffix = substr($file,strrpos($file,'.')); //ファイルのサフィックスを取得します
$down_name = $down_name.$suffix;ファイル名はダウンロード後の名前です
//指定されたファイルが存在するかどうかを判断します
if(!file_exists($file)){
die("ダウンロードしたいファイルはもう存在しません。削除された可能性があります");
}
$fp = fopen( $file,"r");
$file_size = filesize($file);
//ファイルのダウンロードに必要なヘッダー
header("Content-type: application/octet-stream");
header("Accept- Ranges: bytes");
header("Accept-Length:".$file_size);
header("Content-Disposition:attachment; filename=".$down_name);
$buffer = 1024;
$file_count = 0;
/ /ブラウザにデータを返します
while(!feof($fp) && $file_count < $file_size){
$file_con = fread($fp,$buffer);
$file_count += $buffer;
echo $file_con;
}
fclose($fp);
}
?>
より詳細なコメントを含むこのコードを確認することもできます:
$file_name="bjnihao.jpg"; //中国語プログラムはダウンロード プロンプトを完了できません: ファイルが存在しません
//ファイルをトランスコードします (PHP ファイル関数は古いため、中国語コードを gb2312 に変換する必要があります)
//iconv — 文字列を要求された文字エンコーディングに変換します
//www.jb51.net による
$file_name=iconv("utf-8","gb2312",$file_name);
//ファイルのダウンロードパス(相対パス)を設定します
//$file_path="./dowm/".$file_name;
//絶対パスを使用します
$file_path=$_SERVER['DOCUMENT_ROOT']."/http/dowm/".$file_name;
//ファイルを開きます---最初に判断してから操作します
if(!file_exists($file_path)){
echo "ファイルが存在しません";
return ; // 直接終了します
}
//存在します -- ファイルを開きます
$fp=fopen($file_path,"r");
//ファイルサイズを取得します
$file_size=filesize($file_path);
//http ダウンロードに必要な応答ヘッダー
header("Content-type: application/octet-stream") //返されるファイル
header("Accept-Ranges: bytes"); // バイト サイズに応じて返されます。
header("Accept-Length: $file_size"); // ファイル サイズを返します
header("Content-Disposition:attachment; filename=".$file_name);//ここでのクライアントのポップアップ ダイアログ ボックス対応するファイル名
//データをクライアントに返す
//出力サイズを設定する
$buffer=1024;
//ダウンロードの安全性を高めるために、ファイルのバイト読み取りカウンターを作成した方がよいでしょう
$file_count=0;
//ファイル ポインターがファイルの終わりに到達したかどうか (ファイルの読み取りが終了したかどうか) を判断します
while(! feof($ fp) && ($file_size-$file_count)>0){
$file_data=fread($fp,$buffer);
// 読み取られたバイト数をカウントします
$file_count+=$buffer;
// データの一部をブラウザに返します
echo $file_data;
}
/ /ファイルを閉じます
fclose($fp);
?>
パッケージ機能:
/*
パッケージ関数:
パラメータの説明----$file_name: ファイル名
$file_sub_dir: ファイルダウンロードのサブパス
*/
function file_dowm($file_name,$file_sub_dir){
/ / ファイルのトランスコーディング
$file_name=iconv("utf-8","gb2312",$file_name);
//絶対パスを使用します
$file_path=$_SERVER['DOCUMENT_ROOT']."$file_sub_dir".$file_name;
//ファイルを開きます---最初に判断してから操作します
if(!file_exists($file_path)){
echo "ファイルが存在しません";
return ; // 直接終了します
}
//存在します -- ファイルを開きます
$fp=fopen($file_path,"r");
//ファイルサイズを取得します
$file_size=filesize($file_path);
/*
//ここでダウンロードできない最大サイズを設定できます
if($file_size> 50){
echo "ファイルが大きすぎてダウンロードできません";
return ;
}*/
//http ダウンロードに必要な応答ヘッダー
header("Content-type: application/octet-stream") //返されるファイル
header("Accept-Ranges: bytes"); // バイト サイズに応じて返されます。
header("Accept-Length: $file_size"); // ファイル サイズを返します
header("Content-Disposition:attachment; filename=".$file_name);//ここでのクライアントのポップアップ ダイアログ ボックス対応するファイル名
//データをクライアントに返す
//出力のサイズを設定する
$buffer=1024;
//ダウンロードの安全性を高めるために、ファイルのバイト読み取りカウンターを作成した方がよいでしょう
$file_count=0;
//ファイル ポインターがファイルの終わりに到達したかどうか (ファイルの読み取りが終了したかどうか) を判断します
while(! feof($ fp) && ($file_size-$file_count)>0){
$file_data=fread($fp,$buffer);
// 読み取られたバイト数をカウントします
$file_count+=$buffer;
// データの一部をブラウザに返します
echo $file_data;
}
//ファイルを閉じる
fclose($fp);
}
file_dowm("bjnihao.jpg","/http/dowm/");
?>
別のコード:
http://www.bkjia.com/PHPjc/768142.html