You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
76 lines
2.4 KiB
76 lines
2.4 KiB
<?php
|
|
|
|
namespace App\Console\Commands; // 定义命名空间
|
|
|
|
use Illuminate\Filesystem\Filesystem; // 引入 Filesystem 类
|
|
use Illuminate\Support\Facades\Storage; // 引入 Storage 门面(未使用,可以考虑移除)
|
|
|
|
/**
|
|
* 复制文件控制台命令
|
|
*
|
|
* 该命令用于将所有上传的静态资源复制到公共存储目录。
|
|
*/
|
|
class CopyFile extends BaseCommand
|
|
{
|
|
/**
|
|
* 控制台命令的名称和签名
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $signature = 'moon:copy'; // 定义命令的名称和签名
|
|
|
|
/**
|
|
* 控制台命令的描述
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $description = 'Copy all upload static resources'; // 描述该命令的用途
|
|
|
|
/**
|
|
* 文件系统实例
|
|
*
|
|
* @var Filesystem
|
|
*/
|
|
protected $filesystem; // 声明文件系统实例变量
|
|
|
|
/**
|
|
* 创建一个新的命令实例.
|
|
*
|
|
* @param Filesystem $filesystem 文件系统实例
|
|
*/
|
|
public function __construct(Filesystem $filesystem)
|
|
{
|
|
$this->filesystem = $filesystem; // 注入 Filesystem 实例
|
|
|
|
parent::__construct(); // 调用父类构造函数
|
|
}
|
|
|
|
/**
|
|
* 把静态资源发布到 public/storage 目录
|
|
*
|
|
* 该方法执行复制静态资源的逻辑,包括产品图片、默认头像和其他静态图片。
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public function handle()
|
|
{
|
|
// 定义图片的静态目录及目标目录
|
|
$from = storage_path('app/resources/products'); // 源目录:产品图片
|
|
$to = storage_path('app/public/products'); // 目标目录:公共产品图片
|
|
$this->filesystem->copyDirectory($from, $to); // 复制产品图片目录
|
|
|
|
// 复制默认头像
|
|
$from = storage_path('app/resources/avatars'); // 源目录:默认头像
|
|
$to = storage_path('app/public/avatars'); // 目标目录:公共头像
|
|
$this->filesystem->copyDirectory($from, $to); // 复制默认头像目录
|
|
|
|
// 复制其他静态图片
|
|
$from = storage_path('app/resources/images'); // 源目录:其他静态图片
|
|
$to = storage_path('app/public/images'); // 目标目录:公共静态图片
|
|
$this->filesystem->copyDirectory($from, $to); // 复制其他静态图片目录
|
|
|
|
// 输出成功信息
|
|
$this->info('copy file success'); // 命令执行成功后的提示信息
|
|
}
|
|
}
|