Files
orico-official-website/app/admin/controller/v1/Images.php
2025-01-14 17:04:03 +08:00

66 lines
2.2 KiB
PHP

<?php
declare (strict_types = 1);
namespace app\admin\controller\v1;
use app\admin\model\v1\ImageModel;
use Intervention\Image\ImageManager;
use think\facade\Filesystem;
class Images
{
// 上传
public function upload()
{
$file = request()->file('image');
try {
$validate = validate([
'image'=>'fileSize:1048576|fileExt:jpg,jpeg,png,gif'
]);
if (!$validate->check(['image' => $file])) {
return error($validate->getError());
}
$filemd5 = $file->md5();
$filesha1 = $file->sha1();
$filename = Filesystem::disk('public')->putFile('images', $file);
$image_manager = new ImageManager(new \Intervention\Image\Drivers\Gd\Driver());
$image = $image_manager->read('./storage/' . $filename);
$image->scale(200, 200);
$idx = strrpos($filename, '.');
$thumb_filename = mb_substr($filename, 0, $idx) . '_thumb.' . mb_substr($filename, $idx + 1);
$image->save('./storage/' . $thumb_filename);
$image_model = ImageModel::md5($filemd5)->find();
if (is_null($image_model)) {
$image_model = new ImageModel();
}
$image_model->language_id = request()->lang_id;
$image_model->image_name = $file->getOriginalName();
$image_model->image_path = $filename;
$image_model->image_thumb = $thumb_filename;
$image_model->image_size = $file->getSize();
$image_model->image_type = $file->getOriginalMime();
$image_model->image_md5 = $filemd5;
$image_model->image_sha1 = $filesha1;
if (!$image_model->save()) {
return error('上传失败');
}
return success([
'url' => '/storage/' . $filename,
'thumb_url' => '/storage/' . $thumb_filename,
'filemd5' => $filemd5,
'filesha1' => $filesha1
]);
} catch (\Throwable $th) {
return error($th->getMessage());
}
return error('上传失败');
}
}