ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP はバッチのパッケージ化とファイルのダウンロードを実装します

ThinkPHP はバッチのパッケージ化とファイルのダウンロードを実装します

小云云
小云云オリジナル
2018-05-15 14:38:454214ブラウズ

写真やドキュメントなど、いくつかのファイルがあります。条件に応じて自動的に圧縮パッケージ化してダウンロード提供する必要があります。この記事では、PHP または ThinkPHP を使用してファイルを一括でパッケージ化してダウンロードする方法の例を主に紹介します。必要な方はぜひ参考にしてください。

解決策 (ZipArchive クラス):

PHP は、この関数を実装するための ZipArchive クラスを提供します。デモ:

<?php
 
$files = array(&#39;image.jpeg&#39;,&#39;text.txt&#39;,&#39;music.wav&#39;);
$zipname = &#39;enter_any_name_for_the_zipped_file.zip&#39;;
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
 $zip->addFile($file);
}
$zip->close();
 
///Then download the zipped file.
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
 
?>

ThinkPHP バージョン

$zip = new \ZipArchive;
//压缩文件名
$filename = 'download.zip';
//新建zip压缩包
$zip->open($filename,\ZipArchive::OVERWRITE);
//把图片一张一张加进去压缩
foreach ($images as $key => $value) {
 $zip->addFile($value);
}
//打包zip
$zip->close();
 
//可以直接重定向下载
header('Location:'.$filename);
 
//或者输出下载
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header('Content-disposition: attachment; filename='.basename($filename)); //文件名 
header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: binary");
header('Content-Length: '. filesize($filename)); //告诉浏览器,文件大小 
readfile($filename);

違いは、引用するときにパスが正しい必要があることです。

関連する推奨事項:

React と Webpack の構築とパッケージ化の最適化例の詳細な説明

nvm 分析を選択するプロセス全体に対する Parcel.js のパッケージ化エラー

vue 後の空白表示への対処方法梱包されています


以上がThinkPHP はバッチのパッケージ化とファイルのダウンロードを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。