ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルでファイルのダウンロード機能を実装するためのいくつかのコードを共有する

PHP_PHP チュートリアルでファイルのダウンロード機能を実装するためのいくつかのコードを共有する

WBOY
リリース: 2016-07-13 10:29:54
オリジナル
854 人が閲覧しました

単純な 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="Angel.mp3";

$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/");
?>

別のコード:

コードをコピーします コードは次のとおりです:

public function downloads($name){
$name_tmp =explode("_",$name);
$type = $name_tmp[0];
$file_time =explode(".",$name_tmp[3]);
$file_time = $file_time[0];
$file_date = date("Y/md",$file_time);
$file_dir = SITE_PATH." /data/uploads /$type/$file_date/";

if (!file_exists($file_dir.$name)){
header("Content-type: text/html; charset=utf-8");
echo "ファイルが見つかりません!";
exit; } else {
$file = fopen($file_dir.$name,"r");
Header("Content-type: application/octet-stream"); "Accept-Ranges : bytes");
Header("Accept-Length: ".filesize($file_dir . $name));
Header("Content-Disposition:attachment; filename=".$name);
echo fread ($file, filesize($file_dir.$name));
fclose($file);
}
}


http://www.bkjia.com/PHPjc/768142.html

本当http://www.bkjia.com/PHPjc/768142.html技術記事単純な php ファイルはソース コードをダウンロードしますが、ブレークポイントの再開などはサポートされていませんが、いくつかの一般的なニーズを満たすことができます。 PHP でのファイルのダウンロードは、実際には hr... などの a タグを使用して行うことができます
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート