PHP ダウンロード ファイルのソース コード (任意のファイル形式の強制ダウンロード)_PHP チュートリアル
単純な 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_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
true

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

phpstormでCLIモードをデバッグする方法は? PHPStormで開発するときは、PHPをコマンドラインインターフェイス(CLI)モードでデバッグする必要がある場合があります。

システムが再起動した後、UnixSocketの権限を自動的に設定する方法。システムが再起動するたびに、UnixSocketの許可を変更するために次のコマンドを実行する必要があります:sudo ...

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。
