generated from liutk/owl-admin-base
文件上传
parent
86648e67fc
commit
9b4e798fee
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Exceptions\RuntimeException;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\UploadedFile;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\Rules\File;
|
||||
|
||||
class FileUploadController extends Controller
|
||||
{
|
||||
public function __invoke(Request $request)
|
||||
{
|
||||
$request->validate(
|
||||
rules: [
|
||||
'file' => [
|
||||
'bail',
|
||||
'required',
|
||||
File::types(['image/jpeg', 'image/png'])
|
||||
->extensions(['jpg', 'jpeg', 'png'])
|
||||
->max(20 * 1024),
|
||||
],
|
||||
],
|
||||
attributes: [
|
||||
'file' => '文件',
|
||||
],
|
||||
);
|
||||
|
||||
/** @var \Illuminate\Http\UploadedFile */
|
||||
$file = $request->file('file');
|
||||
|
||||
if ($path = $file->storeAs(date('Ymd'), $this->filename($file))) {
|
||||
return [
|
||||
'url' => Storage::url($path),
|
||||
];
|
||||
}
|
||||
|
||||
throw new RuntimeException('上传失败,请重试');
|
||||
}
|
||||
|
||||
protected function filename(UploadedFile $file): string
|
||||
{
|
||||
$hash = Str::random(40);
|
||||
|
||||
$extension = '';
|
||||
|
||||
if ($originalExtension = $file->getClientOriginalExtension()) {
|
||||
$extension = '.'.$originalExtension;
|
||||
} elseif ($guessExtension = $this->guessExtension()) {
|
||||
$extension = '.'.$guessExtension;
|
||||
}
|
||||
|
||||
return $hash.$extension;
|
||||
}
|
||||
}
|
||||
|
|
@ -4,6 +4,7 @@ use App\Http\Controllers\Api\Account\StoreMasterCommissionController;
|
|||
use App\Http\Controllers\Api\Auth\AccessTokenController;
|
||||
use App\Http\Controllers\Api\ComplaintController;
|
||||
use App\Http\Controllers\Api\FeedbackController;
|
||||
use App\Http\Controllers\Api\FileUploadController;
|
||||
use App\Http\Controllers\Api\KeywordController;
|
||||
use App\Http\Controllers\Api\Ledger\LedgerController;
|
||||
use App\Http\Controllers\Api\Ledger\LotteryTypeController;
|
||||
|
|
@ -19,6 +20,8 @@ Route::group([
|
|||
], function () {
|
||||
// 字典表
|
||||
Route::get('keywords', [KeywordController::class, 'index']);
|
||||
// 文件上传
|
||||
Route::post('fileupload', FileUploadController::class);
|
||||
|
||||
// 当前账户信息
|
||||
Route::get('auth/profile', [\App\Http\Controllers\Api\Auth\UserController::class, 'profile']);
|
||||
|
|
|
|||
Loading…
Reference in New Issue