Explorar o código

修改博客上传图片

llp hai 18 horas
pai
achega
6a04401ea3

+ 8 - 0
config/filesystems.php

@@ -52,6 +52,14 @@ return [
             'throw'      => false,
         ],
 
+        'blog_cdn' => [
+            'driver'     => 'local',
+            'root'       => storage_path('app/public'),
+            'url'        => env('BLOG_CDN_URL', 'https://cdn.asteriahair.com'),
+            'visibility' => 'public',
+            'throw'      => false,
+        ],
+
         's3' => [
             'driver'                  => 's3',
             'key'                     => env('AWS_ACCESS_KEY_ID'),

+ 2 - 2
packages/Longyi/Blog/src/Models/Blog.php

@@ -71,7 +71,7 @@ class Blog extends Model implements BlogContract
             return;
         }
 
-        return Storage::url($this->src);
+        return Storage::disk('blog_cdn')->url($this->src);
     }
 
     /**
@@ -85,7 +85,7 @@ class Blog extends Model implements BlogContract
             return;
         }
 
-        return Storage::url($this->m_src);
+        return Storage::disk('blog_cdn')->url($this->m_src);
     }
 
     public function getAssignCategorysAttribute()

+ 20 - 18
packages/Longyi/Blog/src/Repositories/BlogRepository.php

@@ -6,11 +6,9 @@ use Carbon\Carbon;
 use Illuminate\Support\Arr;
 use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Event;
-use Illuminate\Support\Facades\Storage;
 use Longyi\Blog\Models\Category;
+use Longyi\ImageUpload\Services\ImageUploadService;
 use Webkul\Core\Eloquent\Repository;
-use Intervention\Image\ImageManager;
-use Illuminate\Support\Str;
 
 class BlogRepository extends Repository
 {
@@ -97,31 +95,33 @@ class BlogRepository extends Repository
      */
     public function uploadImages($data, $blog, $type = 'src')
     {
+        $imageUploadService = app(ImageUploadService::class);
+
         if (isset($data[$type])) {
             foreach ($data[$type] as $imageId => $image) {
                 $file = $type . '.' . $imageId;
 
-                $dir = 'blog-images/' . $blog->id;
-
                 if (request()->hasFile($file)) {
                     if ($blog->{$type}) {
-                        Storage::delete($blog->{$type});
+                        $imageUploadService->delete($blog->{$type});
                     }
 
-                    $manager = new ImageManager();
+                    $result = $imageUploadService->upload(
+                        request()->file($file)
+                    );
 
-                    $image = $manager->make(request()->file($file))->encode('webp');
-
-                    $blog->{$type} = 'blog-images/' . $blog->id . '/' . Str::random(40) . '.webp';
+                    if (! ($result['success'] ?? false)) {
+                        throw new \Exception($result['error'] ?? 'Blog image upload failed.');
+                    }
 
-                    Storage::put($blog->{$type}, $image);
+                    $blog->{$type} = $result['path'];
 
                     $blog->save();
                 }
             }
         } else {
             if ($blog->{$type}) {
-                Storage::delete($blog->{$type});
+                $imageUploadService->delete($blog->{$type});
             }
 
             $blog->{$type} = null;
@@ -140,13 +140,15 @@ class BlogRepository extends Repository
     {
         $blogItem = $this->find($id);
 
-        $blogItemImage = $blogItem->src;
+        $imageUploadService = app(ImageUploadService::class);
 
-        $blogItemMobileImage = $blogItem->m_src;
-
-        Storage::delete($blogItemImage);
+        if ($blogItem->src) {
+            $imageUploadService->delete($blogItem->src);
+        }
 
-        Storage::delete($blogItemMobileImage);
+        if ($blogItem->m_src) {
+            $imageUploadService->delete($blogItem->m_src);
+        }
 
         return $this->model->destroy($id);
     }
@@ -208,4 +210,4 @@ class BlogRepository extends Repository
 
         return $blogs;
     }
-}
+}