我觉得我一定错过了一些非常简单的东西,但我已经忘记了过去 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',
],
];
我的表单刀片视图包含:
<x-media-library-attachment name="media" rules="mimes:png,jpg,jpeg,gif|max:2048"/>
我的控制器有:
$media
->addFromMediaLibraryRequest( $request->get('media') )
->toMediaCollection('user-media', 's3-media');
而现在会发生什么...
- 我将图像拖到表单视图上的附件容器中,它似乎已成功完成,并且我看到了我刚刚选择的图像的缩略图。
- 附件直接上传到 S3,我确认它在那里。
- temporary_uploads 表显示了上传的模型。
- 媒体表显示了一个上传模型,其中 model_type 为 TemporaryUpload,collection_name 为默认值。
现在我单击表单上的提交。并得到以下异常:
fopen(/srv/users/username/apps/app-name/storage/media-library/temp/HSutOfGcDuysxkxNRJwMYo42L5RaclTU//file_name.jpg):无法打开流:没有这样的文件或目录
- temporary_uploads 表已删除模型。
- 媒体表已更新,显示 model_type 为 MediaManager,collection_name 为 user-media,两者都符合预期。
- 但是这些文件现在完全从 S3 中消失了。storage/media-library 或 storage/media-library/temp 中也没有任何内容。
非常感谢任何建议和帮助!