ホームページ  >  記事  >  バックエンド開発  >  PHP ダウンロード ファイルのソース コード (任意のファイル形式の強制ダウンロード)_PHP チュートリアル

PHP ダウンロード ファイルのソース コード (任意のファイル形式の強制ダウンロード)_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:30:01872ブラウズ

単純な 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);
}
?>

PHP必須ファイルダウンロードのソースコード

ユーザーに必須のファイルダウンロード機能を提供します。

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

/********************
*@file - ファイルへのパス
*/
function Force_download($file)
{
if ((isset($file))&&(file_exists($) file))) {
header("Content-length: ".filesize($file));
header('Content-Type: application/octet-stream');
header('Content-Disposition:attachment; filename= "' . $ file . '"');
readfile("$file");
} else {
echo "ファイルが選択されていません";
}
}

「ファイルをダウンロードする」ということがそんなに簡単だと言う価値があるでしょうか?もちろん、それは想像されているほど単純ではありません。たとえば、顧客が特定のファイルをダウンロードする前にフォームに記入してもらいたい場合、最初に「リダイレクト」メソッドを使用する必要があります。まずフォームが記入され完了したかどうかを確認し、次に URL を指定する必要があります。をファイルに追加して、顧客がダウンロードできるようにします。ただし、「オンライン ショッピング」に関する電子商取引 Web サイトを作成し、セキュリティの問題を考慮する場合は、ユーザーが URL を直接コピーしてファイルをダウンロードすることは望ましくありません。著者は、PHP を使用して実際のファイルを直接読み取り、それをダウンロードする方法をお勧めします。手順は以下の通りです

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

$file_name = "info_check.exe";
$file_dir = "/public/www/download/";
if (!file_exists($file_dir . $file_name)) { //ファイルが存在するかどうかを確認します
echo "ファイルが見つかりません";
exit;
} else {
$file = fopen($file_dir . $file_name,"r") //ファイルを開きます
//入力ファイルタグ
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name) ));
Header ("Content-Disposition:attachment; filename=" . $file_name);
// 出力ファイルの内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file) ;
終了;
}

ファイルパスが「http」または「ftp」URLの場合、ソースコードは以下のように少し変更されます。

コードをコピーします コードは次のとおりです:
$file_name = "info_check.exe";
$file_dir = "http://www.jb51.net/";
$file = @ fopen ($file_dir . $file_name,"r");
if (!$file) {
echo "ファイルが見つかりません";
} else {
Header("Content-type: application/octet-stream");
Header ("Content -Disposition:attachment;filename=" . $file_name);
while (!feof ($file)) {
echo fread($file,50000);
}
fclose ($file);
}

この方法では、PHP を使用してファイルを直接出力できます。

ただし、ヘッダー情報は、まずファイル情報を高速に閲覧し、その情報をブラウザ上で添付ファイルにダウンロードすることに相当します。したがって、MVC モードのアプリケーションを使用している場合は、ビュー ページにコンテンツを含めることはできません。そうしないと、ビュー ページの関連コンテンツがファイルのコンテンツと一緒にダウンロードされ、ダウンロードされたファイルが使用できなくなります。

私のプログラムは次のとおりです:

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

public function downloadAction()
{
if (isset($_GET['mriID']))
{
$this->view-> ;mriID=( get_magic_quotes_gpc())?$_GET['mriID']:addslashes($_GET['mriID']);
>dicomID=(get_magic_quotes_gpc())?$_GET['dicomID']:addslashes( $_GET['dicomID']);
}
if (isset($_GET['JPGID']))
{
$this ->view->JPGID=(get_magic_quotes_gpc())?$_GET['JPGID ']:addslashes($_GET['JPGID']);
}
$dicomfile=new dicomfile();
$jpgfile=new jpgfile();
$mri=new mri();
if($this-> ;view->dicomID)
{
$filename=$dicomfile->find($this->view->dicomID )->toArray();
$filename=$filename[0]['ファイル名'];
}
else if($this->view->JPGID)
{
$filename=$jpgfile->find($this->view->JPGID)->toArray() ;
$filename=$filename[0]['JPGname'];
}
$dir=$mri->find($ this->view->mriID)->toArray();
$dir =$dir[0]['dicom_path'];
$file=$dir.'/'.$filename;
if (! file_exists($file))
{
echo "ファイルが存在しません!";
exit();
}
$file_size=filesize($file);
header("Content-type: application/octet-stream" ; fopen($file,"r");
if (!$fp)
echo "ファイルを開けません!";
$buffer_size=1024;
$cur_pos=0;
while (!feof($fp)&& $file_size-$cur_pos>$buffer_size)
{
$buffer=fread($fp) ,$buffer_size);
echo $buffer;
$cur_pos+=$buffer_size;
}
$buffer=fread($fp,$file_size- $cur_pos);
echo $buffer;
fclose($fp);


この時点では、download.phtml ページは完全に空白である必要があります。いかなるコンテンツも含めてはなりません (次のような静的情報を含みます:



無題ドキュメント) そうしないと、この情報がダウンロード ファイルにダウンロードされ、ファイルが使用できなくなります。

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

www.bkjia.com

tru​​e

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

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