Pārlūkot izejas kodu

首页图片上传S3

bianjunhui 5 dienas atpakaļ
vecāks
revīzija
9a4616e4ed

+ 1 - 1
packages/Longyi/ImageUpload/src/Services/ImageUploadService.php

@@ -28,7 +28,7 @@ class ImageUploadService
         $disk = config('image_upload.default_disk', 's3');
 
         // Generate directory path
-        $uploadDirectory = $directory ?? config('image_upload.upload_directory', 'images/uploads');
+        $uploadDirectory = $directory ?? config('image_upload.upload_directory', 'uploads');
         $path = $uploadDirectory . '/' . date('Ym/d');
 
         // Process and store the image

+ 1 - 1
packages/Webkul/Admin/src/Http/Controllers/Settings/ThemeController.php

@@ -134,7 +134,7 @@ class ThemeController extends Controller
 
         $this->themeCustomizationRepository->delete($id);
 
-        Storage::deleteDirectory('theme/'.$id);
+        Storage::disk('s3')->deleteDirectory('theme/'.$id);
 
         Event::dispatch('theme_customization.delete.after', $id);
 

+ 13 - 13
packages/Webkul/Theme/src/Repositories/ThemeCustomizationRepository.php

@@ -3,9 +3,8 @@
 namespace Webkul\Theme\Repositories;
 
 use Illuminate\Http\UploadedFile;
-use Illuminate\Support\Facades\Storage;
 use Illuminate\Support\Str;
-use Intervention\Image\ImageManager;
+use Longyi\ImageUpload\Services\ImageUploadService;
 use Stevebauman\Purify\Facades\Purify;
 use Webkul\Core\Eloquent\Repository;
 use Webkul\Theme\Contracts\ThemeCustomization;
@@ -58,9 +57,6 @@ class ThemeCustomizationRepository extends Repository
     /**
      * Mass update the status of themes in the repository.
      *
-     * This method updates multiple records in the database based on the provided
-     * theme IDs.
-     *
      * @param  int  $themeIds
      * @return int The number of records updated.
      */
@@ -77,10 +73,17 @@ class ThemeCustomizationRepository extends Repository
     public function uploadImage(array $data, ThemeCustomization $theme)
     {
         $locale = core()->getRequestedLocaleCode();
+        $imageUploadService = app(ImageUploadService::class);
 
         if (isset($data[$locale]['deleted_sliders'])) {
             foreach ($data[$locale]['deleted_sliders'] as $slider) {
-                Storage::delete(str_replace('storage/', '', $slider['image']));
+                $deletePath = str_replace('storage/', '', $slider['image']);
+                $deletePath = str_replace(rtrim(env('AWS_URL', ''), '/') . '/', '', $deletePath);
+                try {
+                    $imageUploadService->delete(ltrim($deletePath, '/'));
+                } catch (\Exception $e) {
+                    // S3 删除失败不阻塞流程
+                }
             }
         }
 
@@ -99,11 +102,8 @@ class ThemeCustomizationRepository extends Repository
                 ];
             } elseif ($image['image'] instanceof UploadedFile) {
                 try {
-                    $manager = new ImageManager;
-
-                    $path = 'theme/'.$theme->id.'/'.Str::random(40).'.webp';
-
-                    Storage::put($path, $manager->make($image['image'])->encode('webp'));
+                    $directory = 'uploads/theme/'  . $theme->id;
+                    $result = $imageUploadService->upload($image['image'], $directory);
                 } catch (\Exception $e) {
                     session()->flash('error', $e->getMessage());
 
@@ -111,11 +111,11 @@ class ThemeCustomizationRepository extends Repository
                 }
 
                 if (($data['type'] ?? '') == 'static_content') {
-                    return Storage::url($path);
+                    return $result['url'];
                 }
 
                 $options['images'][] = [
-                    'image' => 'storage/'.$path,
+                    'image' => $result['url'],
                     'link'  => $image['link'],
                     'title' => $image['title'],
                 ];