You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.7 KiB
PHP
58 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Support\Str;
|
|
use Yo;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Illuminate\Http\Request;
|
|
|
|
class UploadController extends Controller
|
|
{
|
|
|
|
public function file(Request $request)
|
|
{
|
|
if (!$request->hasFile('file')) Yo::error_echo(200024);
|
|
$file = $request->file('file');
|
|
$type = $request->post('type') ?? 'public';
|
|
if (!$file->isValid()) Yo::error_echo(200024);
|
|
$date = date('Y/m');
|
|
$filename = Str::orderedUuid() . '.' . $file->getClientOriginalExtension();
|
|
if ($type == 'forbidden') {
|
|
$file->storeAs("forbidden/$date", $filename);
|
|
$url = "/storage/app/forbidden/$date/$filename";
|
|
} else if ($type == 'h5txt') {
|
|
$filename = $file->getClientOriginalName();
|
|
$file->move(public_path(), $filename);
|
|
$url = "/$filename";
|
|
} else {
|
|
$file->storeAs("public/assets/upload/file/$date", $filename);
|
|
$url = "/storage/assets/upload/file/$date/$filename";
|
|
}
|
|
return Yo::echo([
|
|
'url' => $url
|
|
]);
|
|
}
|
|
|
|
public function image()
|
|
{
|
|
$base64 = request()->post('base64');
|
|
if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64, $result)) {
|
|
$type = ['png', 'jpeg', 'jpg', 'gif'];
|
|
if (!in_array($result[2], $type)) Yo::error_echo(100027);
|
|
$disk = Storage::disk('public');
|
|
$name = Str::orderedUuid();
|
|
$date = date('Y/m');
|
|
$path = "/assets/upload/image/$date/$name.$result[2]";
|
|
$put = $disk->put($path, base64_decode(str_replace($result[1], '', $base64)));
|
|
if (!$put) Yo::error_echo(100028, ['put']);
|
|
$save = "/storage/assets/upload/image/$date/$name.$result[2]";
|
|
return Yo::echo([
|
|
'url' => $save
|
|
]);
|
|
} else {
|
|
Yo::error_echo(100028, ['base64']);
|
|
}
|
|
}
|
|
}
|