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.
aquaculture/app/Admin/Controllers/UploadController.php

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 列表
}
}