ホームページ バックエンド開発 PHPチュートリアル PHP はローカル コンピューター ファイルを取得し、ダウンロードして名前を付けて保存します_PHP チュートリアル

PHP はローカル コンピューター ファイルを取得し、ダウンロードして名前を付けて保存します_PHP チュートリアル

Jul 13, 2016 pm 04:57 PM
php r ダウンロード 使用 戻る 存在する 私たち 書類 はい ほとんど 地元 コンピューター 得る

PHP でファイルをダウンロードするときによく使用するのは、readfile() 関数を直接使用することです。readfile() でファイルをダウンロードする方法とそのパフォーマンスを紹介します。

例1

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

header(“Content-Type: text/html; charset=UTF-8”);
header(“コンテンツタイプ:アプリケーション/テキスト”);

//ファイルの名前は、downloaded.pdf
header(“Content-Disposition:attachment;filename=log.text”);

// PDFソースはoriginal.pdfにあります
readfile("ptindex_user_profilebasc.html");

?>

例 2

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

$item=trim($_GET['fileName']).".txt"; $abs_item='/usr/home/フォルダ名/フォルダ名/フォルダ名/'.$item; $browser='IE'
header('Content-Type: '.(($browser=='IE' || $browser=='OPERA')?
'application/octetstream':'application/octet-stream')); header('有効期限: '.gmdate('D, d M Y H:i:s').' GMT'); header('コンテンツ転送エンコーディング: バイナリ'); header('Content-Length: '.filesize($abs_item)); If($browser=='IE') {
header('Content-Disposition:attachment; filename="'.$item.'"'); header('キャッシュ制御: 再検証が必要、事後チェック=0、事前チェック=0'); header('プラグマ: パブリック'); } その他 {
header('Content-Disposition:attachment; filename="'.$item.'"'); header('Cache-Control: no-cache, must-revalidate'); header('Pragma: no-cache')
}
@readfile($abs_item);


上記ではローカル関数のみをダウンロードできます。リモート関数をダウンロードしたい場合は、次のようにPHPを操作して、ファイルをリモートでローカル関数にダウンロードできます

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

エコー httpcopy("/baidu_sylogo1.gif");

関数 httpcopy($url, $file="", $timeout=60) {
$file = empty($file) パス情報($url,PATHINFO_BASENAME) : $file;
$dir = パス情報($file,PATHINFO_DIRNAME);
!is_dir($dir) && @mkdir($dir,0755,true);
$url = str_replace(" ","%20",$url);

if(function_exists('curl_init')) {
$ch =curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$temp =curl_exec($ch);
If(@file_put_contents($file, $temp) && !curl_error($ch)) {
return $file;
} else {
false を返す;
}
} その他 {
$opts = array(
"http"=>配列(
"メソッド"=>"GET",
"ヘッダー"=>"",
"タイムアウト"=>$タイムアウト)
);
$context = stream_context_create($opts);
If(@copy($url, $file, $context)) {
//$http_response_header
return $file;
} else {
false を返す;
}
}
}
?>

最後に、複数のファイルのダウンロードをサポートするクラス関数を共有します

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

/**
 * 使用方法:
 * require_once 'download.class.php';
 * $filepath = './path/filename.html';
 * $downname = 'downname.html';
 * $down = 新しいダウンロード($filepath,$downname);
 * または
 * $down = 新しいダウンロード();
 *
 **/
クラスのダウンロード
{
var $ファイルパス;
var $downname;
var $ErrInfo;
var $is_attachment = false;
var $_LANG = 配列(
「エラー」 => 「エラー」、
'args_empty' => 'パラメータが間違っています。 '、
'file_not_exists' => 'ファイルは存在しません! '、
'file_not_readable' => 'ファイルを読み取れません! '、
);
var $MIMETypes = array(
'ez' => 'application/andrew-inset',
'hqx' => 'application/mac-binhex40',
'cpt' => 'application/mac-compactpro',
'doc' => 'アプリケーション/msword',
'bin' => 'アプリケーション/オクテットストリーム',
'dms' => 'アプリケーション/オクテットストリーム',
'lha' => 'アプリケーション/オクテットストリーム',
'lzh' => 'アプリケーション/オクテットストリーム',
'exe' => 'アプリケーション/オクテットストリーム',
'クラス' => 'アプリケーション/オクテットストリーム',
'so' => 'application/octet-stream',
'dll' => 'アプリケーション/オクテットストリーム',
'oda' => 'アプリケーション/oda',
'pdf' => 'アプリケーション/pdf',
'ai' => 'アプリケーション/ポストスクリプト',
'eps' => 'アプリケーション/ポストスクリプト',
'ps' => 'アプリケーション/ポストスクリプト',
'smi' => 'アプリケーション/smil',
'smil' => 'アプリケーション/smil',
'mif' => 'application/vnd.mif',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
'wbxml' => 'application/vnd.wap.wbxml',
'wmlc' => 'application/vnd.wap.wmlc',
'wmlsc' => 'application/vnd.wap.wmlscrīptc',
'bcpio' => 'application/x-bcpio',
'vcd' => 'application/x-cdlink',
'pgn' => 'application/x-chess-pgn',
'cpio' => 'application/x-cpio',
'csh' => 'application/x-csh',
'dcr' => 'アプリケーション/x-director',
'dir' => 'application/x-director',
'dxr' => 'アプリケーション/x-director',
'dvi' => 'アプリケーション/x-dvi'、
'spl' => 'application/x-futuresplash',
'gtar' => 'application/x-gtar',
'hdf' => 'application/x-hdf',
'js' => 'application/x-javascript',
'skp' => 'application/x-koan',
'skd' => 'application/x-koan',
'skt' => 'application/x-koan',
'skm' => 'application/x-koan',
'latex' => 'application/x-latex',
'nc' => 'application/x-netcdf',
'cdf' => 'application/x-netcdf',
'sh' => 'application/x-sh',
'shar' => 'application/x-shar',
'swf' => 'application/x-shockwave-flash',
'sit' => 'application/x-stuffit',
'sv4cpio' => 'application/x-sv4cpio',
'sv4crc' => 'application/x-sv4crc',
'tar' => 'application/x-tar',
'tcl' => 'application/x-tcl',
'tex' => 'application/x-tex',
'texinfo' => 'application/x-texinfo',
   'テキ' => 'application/x-texinfo'、
   't' => 'アプリケーション/x-troff'、
   'tr' => 'アプリケーション/x-troff'、
   'roff' => 'アプリケーション/x-troff'、
   '男' => 'application/x-troff-man'、
   「私」=> 'application/x-troff-me'、
   'ms' => 'application/x-troff-ms'、
   'ustar' => 'アプリケーション/x-ustar'、
   'src' => 'application/x-wais-source',
   'xhtml' => 'アプリケーション/xhtml+xml'、
   'xht' => 'アプリケーション/xhtml+xml'、
   'zip' => 'アプリケーション/zip'、
   「au」=> 'オーディオ/基本'、
   'snd' => 'オーディオ/基本'、
   'ミッド' => 'オーディオ/MIDI'、
   'ミディ' => 'オーディオ/MIDI'、
   'カー' => 'オーディオ/MIDI'、
   'mpga' => 'オーディオ/MPEG'、
   'mp2' => 'オーディオ/MPEG'、
   'mp3' => 「オーディオ/MPEG」、
   'wma' => 'オーディオ/MPEG'、
   'aif' => 'オーディオ/x-aiff'、
   'aiff' => 'オーディオ/x-aiff'、
   'aifc' => 'オーディオ/x-aiff'、
   'm3u' => 'audio/x-mpegurl'、
   'ラム' => 'audio/x-pn-realaudio'、
   'rm' => 'audio/x-pn-realaudio'、
   'rpm' => 'audio/x-pn-realaudio-plugin'、
   'ら' => 'audio/x-realaudio'、
   'wav' => 'オーディオ/x-wav'、
   'pdb' => '化学/x-pdb'、
   'xyz' => '化学/x-xyz'、
   'bmp' => '画像/bmp'、
   'gif' => '画像/GIF'、
   'ief' => '画像/ief'、
   'jpeg' => '画像/jpeg'、
   'jpg' => '画像/jpeg'、
   'jpe' => '画像/jpeg'、
   'png' => '画像/png'、
   'tiff' => '画像/ティフ'、
   'tif' => '画像/ティフ'、
   'djvu' => 'image/vnd.djvu'、
   'djv' => 'image/vnd.djvu'、
   'wbmp' => 'image/vnd.wap.wbmp'、
   'ラス' => 'image/x-cmu-raster'、
   'pnm' => 'image/x-portable-anymap'、
   'pbm' => 'image/x-portable-bitmap',
   'pgm' => 'image/x-portable-graymap',
   'ppm' => 'image/x-portable-pixmap',
   'rgb' => 'image/x-rgb'、
   'xbm' => 'image/x-xbitmap'、
   'xpm' => 'image/x-xpixmap'、
   'xwd' => 'image/x-xwindowdump'、
   'igs' => 'モデル/iges'、
   'iges' => 'モデル/iges'、
   'msh' => 'モデル/メッシュ'、
   'メッシュ' => 'モデル/メッシュ'、
   'サイロ' => 'モデル/メッシュ'、
   'wrl' => 'モデル/vrml'、
   'vrml' => 'モデル/vrml'、
   'css' => 'テキスト/CSS'、
   'html' => 'テキスト/html'、
   'htm' => 'テキスト/html'、
   'asc' => 'テキスト/プレーン'、
   'txt' => 'テキスト/プレーン'、
   'rtx' => 'テキスト/リッチテキスト'、
   'rtf' => 'テキスト/rtf'、
   'sgml' => 'テキスト/sgml'、
   'sgm' => 'テキスト/sgml'、
   'tsv' => 'テキスト/タブ区切り値',
   'wml' => 'text/vnd.wap.wml'、
   'wmls' => 'text/vnd.wap.wmlscript'、
   'etx' => 'text/x-setext'、
   'xsl' => 'テキスト/xml'、
   'xml' => 'テキスト/xml'、
   'mpeg' => 'ビデオ/mpeg'、
   'mpg' => 'ビデオ/mpeg'、
   'mpe' => 'ビデオ/mpeg'、
   'qt' => 'ビデオ/クイックタイム'、
   'mov' => 'ビデオ/クイックタイム'、
   'mxu' => 'video/vnd.mpegurl'、
   'avi' => 'ビデオ/x-msvideo'、
   '映画' => 'video/x-sgi-movie'、
   'wmv' => 'application/x-mplayer2',
   '氷' => 「x-カンファレンス/x-cooltalk」、
  );
 
 関数ダウンロード($filepath='',$downname='')
 {
  if($filepath == '' AND !$this->filepath)
  {
   $this->ErrInfo = $this->_LANG['err'] 。 ':' 。 $this->_LANG['args_empty'];
   false を返します;
  }
  if($filepath == '') $filepath = $this->filepath;
  if(!file_exists($filepath))
  {
   $this->ErrInfo = $this->_LANG['err'] 。 ':' 。 $this->_LANG['file_not_exists'];
   false を返します;
  }
  if($downname == '' AND !$this->downname) $downname = $filepath;
  if($downname == '') $downname = $this->downname;
  // 文件扩展名
  $fileExt = substr(strrchr($filepath, '.'), 1);
  // 文件型
  $fileType = $this->MIMETypes[$fileExt] ? $this->MIMETypes[$fileExt] : 'アプリケーション/オクテットストリーム';
  // かどうか写真
  $isImage = False;
  /*
  説明: getimagesize()、详见手册
  説明: 特定のファイルが写真であるかどうかを判定するための有効な手段であり、ファイル上で常用されています
  */
  $imgInfo = @getimagesize($filepath);
  if ($imgInfo[2] && $imgInfo['bits'])
  {
   $fileType = $imgInfo['mime'];  // サポート不标標準扩展名
   $isImage = True;
  }
  // 表示方法
  if($this->is_attachment)
  {
   $attachment = '添付ファイル';  // 指定弹出下ダウンロード对话框
  }
  それ以外は
  {
   $attachment = $isImage ? 'インライン' : '添付ファイル';
  }
  // 读取文件
  if (is_readable($filepath))
  {
   /*
   説明: ob_end_clean() 清空并关闭输出缓冲、详见手册
   説明: 关闭出力冲、ファイルの断片の内容を内部保存まで取得した後すぐに送信され、消費リソースが少なくなります
   */
   ob_end_clean();
   /*
   HTTP 情報: ゲストマシンが生存期間を受信できることを示します指定時間 (秒) を超えていません
   */
   header('キャッシュ制御: max-age=31536000');
   /*
   HTTP 情報: 缓存文件过期间(格林威治标標準時)
   */
   header('Expires: ' . gmdate('D, d M Y H:i:s', time()+31536000) . ' GMT');
   /*
   HTTP 情報: 文書はサービス期間中に最後に変更されました
   キャッシュ制御、期限切れ、最終更新日 都是制御浏览器缓存的情報
   いくつかの巨大な問題において、合理的な配置により、多数のサーバー要求を回避し、サーバーの圧力をある程度解決します
   */
   header('Last-Modified: ' . gmdate('D, d M Y H:i:s' , filemtime($filepath) . ' GMT'));
   /*
   HTTP 情報: 文档のコードコード (エンコード) メソッド、添付ファイル要求のファイルが多種類化されているため、変更コード方式が変更される可能性があります。    */
   header('Content-Encoding: none');
   /*
   HTTP 情報: 告示浏览器現在の要求の文ファイルの種類。
   1.開始终はapplication/octet-streamに指定され、就代表文件は二进制流、開始终提案ダウンロード。
   2. 要求された場合は mp3 ファイル、要求された場合は MP3 形式、IE は自動的に Windows Media Player を実行します。
   */
   header('Content-type: ' . $fileType);
   /*
   HTTP 情報: 添付ファイルの場合は、告発者、受信時に「ファイルのダウンロード」を送信し、保存時のファイルの名前を指定します (サービスのファイル名とは異なる場合があります)
   如果要让浏览器直接表示内容, 则要指定inline, 图片, 文本
   */
   header('Content-Disposition: ' . $attachment . '; filename=' . $downname);
   /*
   HTTP头情報: 告诉浏览器文件長度
   (IE下ダウンロード文件の候時不是文件大小信息么?)
   */
header('Content-Length: ' . filesize($filepath)); // ファイルを開く (バイナリ読み取り専用モード)
$fp = fopen($filepath, 'rb'); // 出力ファイル
fパススルー($fp); //ファイルを閉じる
fclose($fp); true を返します;
}
それ以外は
{
$this->ErrInfo = $this->_LANG['err'] . $this->_LANG['file_not_readable'];
false を返します;
}
}
}
?>



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

www.bkjia.com

http://www.bkjia.com/PHPjc/631556.html技術記事 PHP でファイルをダウンロードするときによく使用するのは、readfile() 関数を直接使用することです。readfile() でサーバーのソース ファイルをダウンロードすることができます...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

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

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

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

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

携帯電話でXMLをPDFに変換する方法は? 携帯電話でXMLをPDFに変換する方法は? Apr 02, 2025 pm 10:18 PM

携帯電話でXMLをPDFに直接変換するのは簡単ではありませんが、クラウドサービスの助けを借りて実現できます。軽量モバイルアプリを使用してXMLファイルをアップロードし、生成されたPDFを受信し、クラウドAPIで変換することをお勧めします。クラウドAPIはサーバーレスコンピューティングサービスを使用し、適切なプラットフォームを選択することが重要です。 XMLの解析とPDF生成を処理する際には、複雑さ、エラー処理、セキュリティ、および最適化戦略を考慮する必要があります。プロセス全体では、フロントエンドアプリとバックエンドAPIが連携する必要があり、さまざまなテクノロジーをある程度理解する必要があります。

一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 一致式(PHP 8)とそれがスイッチとどのように異なるかを説明します。 Apr 06, 2025 am 12:03 AM

PHP8では、一致式は、式の値に基づいて異なる結果を返す新しい制御構造です。 1)Switchステートメントに似ていますが、実行ステートメントブロックの代わりに値を返します。 2)一致式の式は厳密に比較され、セキュリティが向上します。 3)スイッチステートメントの脱落の可能性を回避し、コードのシンプルさと読みやすさを向上させます。

XMLオンラインフォーマット XMLオンラインフォーマット Apr 02, 2025 pm 10:06 PM

XMLオンラインフォーマットツールは、厄介なXMLコードを自動的に読みやすい形式と維持します。 XMLの構文ツリーを解析し、フォーマットルールを適用することにより、これらのツールはコードの構造を最適化し、その保守性とチームワークの効率を向上させます。

PSが荷重を見せ続ける理由は何ですか? PSが荷重を見せ続ける理由は何ですか? Apr 06, 2025 pm 06:39 PM

PSの「読み込み」の問題は、リソースアクセスまたは処理の問題によって引き起こされます。ハードディスクの読み取り速度は遅いか悪いです。CrystaldiskInfoを使用して、ハードディスクの健康を確認し、問題のあるハードディスクを置き換えます。不十分なメモリ:高解像度の画像と複雑な層処理に対するPSのニーズを満たすためのメモリをアップグレードします。グラフィックカードドライバーは時代遅れまたは破損しています:ドライバーを更新して、PSとグラフィックスカードの間の通信を最適化します。ファイルパスが長すぎるか、ファイル名に特殊文字があります。短いパスを使用して特殊文字を避けます。 PS独自の問題:PSインストーラーを再インストールまたは修理します。

H5ページの生産には継続的なメンテナンスが必要ですか? H5ページの生産には継続的なメンテナンスが必要ですか? Apr 05, 2025 pm 11:27 PM

H5ページは、コードの脆弱性、ブラウザー互換性、パフォーマンスの最適化、セキュリティの更新、ユーザーエクスペリエンスの改善などの要因のため、継続的に維持する必要があります。効果的なメンテナンス方法には、完全なテストシステムの確立、バージョン制御ツールの使用、定期的にページのパフォーマンスの監視、ユーザーフィードバックの収集、メンテナンス計画の策定が含まれます。

See all articles