php - 从 Laravel 中的文件夹复制文件
问题描述
我在工作中使用 laravel 开发 CMS,如果我发布品牌网站的页面,我需要在发布之前创建一个文件夹结构。
万一我
app / themes / default / public
想复制文件夹内的public
文件并将它们发送到将要创建的文件夹app / websites-published / '. $ content-> nanoid
。
我该怎么做?
public function publish(Request $request, Site $site)
{
/** @var $contents */
$contents = $site->contents;
/** @var $content */
foreach ($contents as $content) {
// Copiar o Public do THEME - THEME/NOME DO TEMA/PUBLIC - WebsitePublished->Nanoid
// Conteudo do ex: THEME/PUBLIC
$copyTheme = storage_path('app/themes/default/public');
$sendTheme = public_path('app/websites-published/' . $content->nanoid);
copy($copyTheme, $sendTheme);
// Copiar o Public do WEBSITE - WebsitePublished->Site:Nanoid
// Conteudo do ex: WEBSITE/SUZUKI/PUBLIC
// APP/WEBPUBLISHED
}
return $this->viewService->renderContent($request, $content);
}
解决方案
Laravel 有一个 Filesystem 可以处理大多数系统上的文件操作。外观类只能复制单个文件,因此Storage
您需要轻松地循环到所有文件,但这是太多的工作,因为该类Filesystem
可以在递归地创建目录时递归地复制或移动整个目录。
要移动整个目录,您必须执行 import Filesystem class :
use Illuminate\Filesystem\Filesystem;
并使用copyDirectory()
方法:
public function publish(Request $request, Site $site)
{
/** @var $contents */
$contents = $site->contents;
/** @var $content */
foreach ($contents as $content) {
// Copiar o Public do THEME - THEME/NOME DO TEMA/PUBLIC - WebsitePublished->Nanoid
// Conteudo do ex: THEME/PUBLIC
$copyTheme = storage_path('app/themes/default/public');
$sendTheme = public_path('app/websites-published/' . $content->nanoid);
$filesys = new Filesystem();
$filesys->moveDirectory($copyTheme, $sendTheme);
// Copiar o Public do WEBSITE - WebsitePublished->Site:Nanoid
// Conteudo do ex: WEBSITE/SUZUKI/PUBLIC
// APP/WEBPUBLISHED
}
return $this->viewService->renderContent($request, $content);
}
推荐阅读
- python-2.7 - 如何克服此错误“TypeError: unsupported operand type(s) for -: 'float' and 'instancemethod'”
- c# - 从 WPF 应用程序拍照和录制多媒体文件
- javascript - 通过 javascript 实现 cookie 后不会显示 Web 弹出窗口
- c# - 关于如何将值为 1-5 的整数转换为从 1 到 5 内联的文本的任何建议?
- powershell - 为什么我不能处置我的源 FileSystemWatcher 对象?
- lua - Lua中的表过滤器用于多维表
- android - admob 正在处理测试 ID,但不使用实时 ID
- arrays - VueJS v-for:删除重复项
- xcode - Mac 上的 Visual Studio Code(运行 c 文件):链接器命令失败,退出代码为 1
- c# - 从 SQLite 数据库获取最大值时没有出现当前行消息