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.
44 lines
1.8 KiB
44 lines
1.8 KiB
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Exceptions\UploadException; // 引入自定义上传异常类
|
|
use App\Http\Controllers\Controller; // 引入控制器基类
|
|
use App\Services\UploadServe; // 引入上传服务类
|
|
use Illuminate\Support\Facades\Storage; // 引入存储门面,便于文件存储操作
|
|
|
|
class UploadController extends Controller
|
|
{
|
|
/**
|
|
* 通过编辑器上传文件.
|
|
*
|
|
* @param UploadServe $uploadServe 上传服务实例
|
|
* @return array 返回上传结果数组
|
|
*/
|
|
public function uploadByEditor(UploadServe $uploadServe)
|
|
{
|
|
$disk = 'public'; // 定义使用的存储磁盘
|
|
|
|
try {
|
|
// 设置文件输入名称、最大文件大小和允许的文件扩展名,并进行验证和存储
|
|
$files = $uploadServe->setFileInput('pictures') // 设置文件输入名称为 'pictures'
|
|
->setMaxSize('10M') // 设置最大文件大小为 10MB
|
|
->setExtensions(['jpg', 'jpeg', 'png', 'bmp', 'gif']) // 设置允许的文件扩展名
|
|
->validate() // 验证上传的文件
|
|
->storeMulti('upload/editor', compact('disk')); // 存储文件,路径为 'upload/editor'
|
|
|
|
// 将存储的文件路径转换为可访问的 URL
|
|
$files = collect($files)->map(function ($file) use ($disk) {
|
|
return Storage::disk($disk)->url($file); // 获取文件的 URL
|
|
})->all(); // 转换为数组
|
|
|
|
} catch (UploadException $e) {
|
|
// 捕获上传异常并返回错误信息
|
|
return ['errno' => 1, 'msg' => $e->getMessage()]; // 返回错误代码和消息
|
|
}
|
|
|
|
// 返回成功的上传结果
|
|
return ['errno' => 0, 'data' => $files]; // 返回成功代码和文件 URL 列表
|
|
}
|
|
}
|