将 laravel-medialibrary-pro 媒体存储到 AWS S3 时出现问题

Problem storing laravel-medialibrary-pro media to AWS S3

我觉得我一定遗漏了一些非常简单的东西,但我已经忘记了过去 3 天我尝试过的所有事情......我正在使用 medialibrary-pro 来实现临时上传功能附件直接上传到 S3。

首先,我的配置:

.env

MEDIA_DISK="s3-media"

config/filesystems.php 已定义我的 s3 磁盘:

        's3-media' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
        'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false),
        'root' => 'media-manager'
    ],

media-library.php是artisan生成的stock,上面看到的磁盘名是我的.env文件中设置的:

return [
'temporary_file_upload' => [
    'rules' => 'file|mimes:png,jpg,jpeg,gif|max:2048',
    'disk' => 's3-media',
    ],
];

我的表单 blade 视图包含:

<x-media-library-attachment name="media" rules="mimes:png,jpg,jpeg,gif|max:2048"/>

我的控制器有:

$media
   ->addFromMediaLibraryRequest( $request->get('media') )
   ->toMediaCollection('user-media', 's3-media');

现在发生了什么......

  1. 我将一张图片拖到表单视图的附件容器中,似乎已成功完成,我看到了我刚刚选择的图片的缩略图。
  1. 现在我在表单上单击提交。并得到以下异常:

    fopen(/srv/users/username/apps/app-name/storage/media-library/temp/HSutOfGcDuysxkxNRJwMYo42L5RaclTU//file_name.jpg): 无法打开流:没有那个文件或目录

非常感谢任何建议和帮助!

您模型上的 运行 save() 似乎会导致各种问题。我回到 https://github.com/spatie/laravel-medialibrary-pro-app 处的示例代码并重写了我的查询以使用创建方法而不是插入。一旦我将 $model->save() 排除在等式之外,一切都按预期进行。我最终为临时上传创建了一个本地媒体磁盘,然后在处理上传时将其发送到我的 s3 媒体磁盘。